본문 바로가기

전체 글

(26)
[StudyHub] FK 매핑으로 인한 외래키 참조 무결성 문제 해결 서론 스터디허브 프로젝트에서 무분별하게 FK를 설정한 탓에 문제가 발생했다. 아래는 스터디허브의 회원, 신청, 스터디의 ERD이다. apply 테이블은 users, study 테이블의 식별자를 외래키로 참조한다. apply 테이블이 users 테이블의 데이터를 참조할 때 users 테이블의 데이터를 지우려고 하면 외래키 제약조건에 의해 에러가 발생할 것으로 예상된다. 테스트를 돌려서 확인해보자. 문제 UserEntity와 StudyEntity의 식별자로 ApplyEntity를 조회하는 기능의 단위 테스트를 작성했다. @Test void 유저식별자와_스터디식별자로_스터디요청_엔티티_조회() { // given UserEntity user = userRepository.save(UserEntityFixtur..
[StudyHub] unknown column '필드명' in 'field list' 에러 해결 서론 unkown column ~~ in field list 에러가 발생하기 하루 전, 엔티티의 테이블명, 컬럼 이름을 바꾸고 로컬에서 테스트를 마친 뒤 배포 서버에 배포했지만.. 게시글 전체 조회, 회원사진 저장, 회원 삭제 API가 정상적으로 동작하지 않는다는 프론트분의 메시지를 받았다. 로컬 테스트 환경에서는 잘 동작하는 것만 믿고 배포 환경에서 제대로 테스트해보지 못한게 불찰이었다. 흔들리는 멘탈을 부여잡고 팀원분과 함께 원인 분석을 해보았다. 문제 발생 스터디허브는 블루그린 배포 방식을 이용해 배포하기 때문에 main 브랜치에 커밋 할때마다 기존 서버가 종료되고 새로운 서버가 실행된다. 이 때 만약 ddl auto를 create로 잡게되면 매번 DB 테이블에 있는 튜플들이 초기화된다. 곧 서비스..
[StudyHub] 조회 메서드 반환 객체 분리 서론 프로젝트의 repository 레이어 단위테스트를 작성하던 중 개선사안 두가지를 발견했다. [개선 사안 1] 게시글 조회 관련 StudyPostRepositoryImpl 객체의 메서드들은 동적 쿼리 생성 시 아래 코드와 같이 반환값으로 각기 다른 dto를 반환하고 있었다. @Override public Slice findByInquiry(final InquiryRequest inquiryRequest, final Pageable pageable, Long userId) { QStudyPostEntity post = studyPostEntity; QUserEntity user = userEntity; QBookmarkEntity bookmark = bookmarkEntity; ...중략 @Overri..