[프로젝트] N+1 문제와 QueryDsl
2023. 5. 31. 17:03
Spring
🔎문제 상황 yata프로젝트 중, 1:N 관계가 맺어져 있는 리뷰 전체조회, 게시글 전체조회 시 일대다 관계로 매핑된 테이블의 조회 쿼리까지 함께 날아가는 N+1문제가 발생하였다. 🔎원인 N+1 자체가 발생하는 이유는 한쪽 테이블만 조회하고 연결된 다른 테이블은 따로 조회하기 때문이다. 연관 관계가 설정된 엔티티를 조회할 경우에 조회된 데이터 갯수(n) 만큼 연관관계의 조회 쿼리가 추가로 발생하여 데이터를 읽어오게 된다. 왜 이런 문제가 생기냐면,,, jpaRepository에 정의한 인터페이스 메서드를 실행하면 JPA는 메서드 이름을 분석해서 JPQL을 생성하여 실행하게 된다. JPQL은 SQL을 추상화한 객체지향 쿼리 언어로서 특정 SQL에 종속되지 않고 엔티티 객체와 필드 이름을 가지고 쿼리를 한다..