이론/JPA

    N+1 문제란?

    N+1 문제란 무엇일까? 연관관계가 있는 엔티티를 조회할 경우 조회된 데이터의 갯수(N) 만큼 조회 쿼리가 추가로 발생하는 문제 N+1 문제 발생 이유 JpaRepository 가 JPQL 로 쿼리를 실행할 때는 Fetch 전략을 따르지 않고 JPQL 자체만을 이용하기 때문이다. JPQL 은 엔티티 객체와 필드를 가지고 쿼리를 한다. JPQL 입장에서는 연관관계를 모르고 해당 엔티티를 기준으로만 쿼리를 만든다. 그렇기 때문에 연관된 엔티티 데이터가 필요한 경우, Fetch 전략으로 지정한 시점에 조회를 별도로 호출하게 된다. 해결 방법 Fetch join 정의 JPQL 을 이용하여서 DB에서 데이터를 가져올 때 처음부터 연관된 데이터까지 같이 가져오게 하는 방법 단점 연관관계 설정해놓은 Fetch 전략을..