개인 프로젝트 중 문제 발생

Taeseon Kim·2023년 5월 3일
0

가고 싶은 기업이 생겨 이력서를 내자마자 바로 광탈했는데,
그 이유가 kotlin을 사용하지 않아서라고 한다.

나 김태선 그딴 것에 굴복하지 않는 남자. kotlin을 학습하고, 우대사항에 jpa가 가능한 사람을 찾고 있길래 바로 낮에는 공부 밤에는 프로젝트를 하기 시작한지 어언 몇주,,

이 중 동적 쿼리 처리를 위해 queryDsl과 jdsl을 고민했는데, 물론 하는 것은 작은 프로젝트이긴 하지만, Q-type class와 같은 메타데이터를 작동 시 만들지 않고, 프로퍼티를 참조할 수 있는 kotlin 특성을 잘 살린 jdsl을 사용해보기로 했다.

사용 중 문제가 발생했는데,

위와 같이 Post라는 Entity는 Member와 N:1관계로 엮여 있다.
따라서 Post를 Select할 때 Member를 Select하는 쿼리가 동반되게 되는데,
규모가 작긴 하지만 이또한 N+1 problem이라고 알고 있다.

N+1 problem을 해결하기 위해 나는 inner join이 아닌 fetch join을 사용하고자 했다.

jdsl이 fetch join을 지원하기 때문에 이를 적용했고, 결론적으로

똑같은 N+1 problem이 발생했다.
이를 해결하기 위해 fetchType을 EAGER로 설정해보기도 하고, fetch를 join 메서드로도 바꿔봤는데, 변하는 것은 없었다..

아마 Post entity를 dto로 변환하는 과정에서 한번 더 발생하는 듯 한데, 슬프다.

jdsl 자체가 많이 쓰이지 않는 라이브러리이다보니, 정보가 많이 없어 결국,,

jdsl 이슈에 올려서 해결하려 한다.
휴,, 이에 대한 해결이 된다면 바로 해결 방법에 대해 게시해야지,.

profile
공부하여 이해가 된 것만 정리합니다.

0개의 댓글