FetchJoin

· Spring
QueryDSL의 페이징 카테시안 곱 문제 해결 방법 복잡한 일대다 연관관계를 가진 데이터를 페이징 처리할 때 어떤 어려움을 겪은 적이 있으신가요? 저는 실무에서 페이징을 처리하다 보면 목록을 조회할 때 단순하게 하나의 연관관계가 아니라 일대다의 연관관계를 한두 개가 아닌 여러 개를 같이 조회할 경우가 생기게 됬었습니다. 이때 평소와 같이 페이징을 구현했더니 결과는 제대로 나오지 않았습니다. 이유는 바로 1:N 관계에서 발생하는 카테시안 곱 문제 때문입니다. JPA를 사용한다면 다들 한번쯤 겪어볼 문제이기 때문에 해결하기 위한 전략과 팁을 공유하기 위해 작성했습니다. 카테시안 곱(Cartesian Product)이란? JPA에서의 카테시안 곱은 데이터베이스 쿼리 수행시 여러 테이블 간의 조인을 잘못 사용..
· Spring
QueryDSL에서 JPA N+1 문제 해결하기 JPA를 배우며 N+1 문제에 대해 인지를 했지만, QueryDSL을 사용했을 때 어색하고, 잘 활용하지 못했던 경험이 있었습니다. 그래서 자주 사용하는 QueryDsl 기준으로 N+1문제를 해결하는 방법에 대해 알아보기 위해 글을 작성했습니다. JPA N+1 한 Entity를 조회했을 때 한 개의 쿼리가 생성되는 기댓값을 가지고 조회를 합니다. 하지만 어떤 상황의 경우에 한 개의 쿼리가 아닌 여러 개의 쿼리가 N개만큼 추가로 발생하는데 이것을 JPA의 N+1 문제라고 합니다. N+1문제가 발생하는 상황은 다음과 같습니다. 즉시 로딩 엔티티를 조회하는 경우 즉시 로딩의 경우 엔티티를 조회 할때마다 쿼리를 바로 날리기 때문에 N+1문제가 발생합니다. 지연 로..
97class
'FetchJoin' 태그의 글 목록