본문 바로가기

join2

JPA - N+1 문제와 해결방법 정리 들어가며 JPA를 사용하다 보면 N+1 문제를 한번씩은 겪어봤을것이다. 하지만 콘솔창을 자세히 보지 않았다면 그냥 지나쳤을 수도 있다. N+1의 문제가 발생한다고 해서 결과에 문제가 생기는 것은 아니지만 성능에는 문제가 생길 수 있기 때문에 확실히 인지해서 문제를 해결하는 것이 좋다. N+1 문제란 무엇인가? 연관관계가 설정된 엔티티를 조회할 때 조회 된 데이터의 갯수만큼 조회 쿼리가 추가로 발생하는 경우는 말한다. 이해를 돕기 위해 예를 들면 팀과 회원의 연관관계에서 팀을 조회했을때 팀에 속한 회원이 10명 있다고 가정할때 팀을 조회할때 연관관계를 가지고 있는 회원을 조회하는 쿼리가 10번(n번) 발생하는 것을 의미한다. N+1 == 10번(회원) + 1번(팀) Fetch 모드에 따른 결과 (즉시 로딩.. 2022. 8. 9.
QueryDsl 사용 시 CrossJoin 발생하는 경우와 해결 방법 들어가며 QueryDsl을 사용하던 도중 원치않게 CrossJoin이 발생하는 경우를 발견하여 해당 사항을 정리한다. Cross Join 먼저 CrossJoin이 무엇인지에 대해서 알아본다. CrossJoin은 교차조인이라고 말하여 두 테이블이 있을때 교차조인을 하게 되면 두 테이블의 데이터의 모든 조합을 나타내게 된다. 한쪽에 데이터가 n개이고 다른 한쪽에 데이터가 m개라고 한다면 총 n x m개의 경우의 수가 나타나게 되어 데이터가 많은 테이블이라면 사용할때 주의하지 않으면 성능상 큰 문제를 가져올 수 있다. Cross Join 발생하는 경우 위에서도 설명을 했듯이 교차 조인이 필요하여 사용하는 경우는 상관없지만 원치않는 상황에서 교차조인이 발생하게 되면 성능상 문제가 될 수 있기에 원치 않는 교차 .. 2022. 7. 29.