개요JPA를 사용한 프로젝트를 진행하다보면, DB 조회 시 연관 관계에 있는 하위 엔티티들을 한꺼번에 가져오지 않고, 각각의 하위 엔티티를 개별적으로 조회하면서 불필요한 추가 쿼리가 발생하는 문제인 N+1 문제가 자주 발생합니다. 이러한 N + 1 문제를 해결하는 방법에는 @EntityGraph, @BatchSize , Fetch Join등 여러가지가 있습니다. 그런데 왜 많은 개발자들이 여러가지 방법 중 Fetch Join을 사용하는지에 대해서 정리하고자 합니다. 왜 Fetch Join인가❓1. 즉시 로딩과 명시적 제어Fetch Join은 JPQL 쿼리에서 명시적으로 사용되기 때문에, 어떤 연관 데이터를 즉시 로딩할지 명확하게 정의할 수 있습니다. 이는 @EntityGraph나 @BatchSize와 ..
fetch join
개요JPA를 사용하다보면 가장 흔하게 발생하는 문제가 바로 "N+1"문제입니다. N+1문제를 해결하기 위한 방법은 여러가지이지만 주로 Fetch Join을 사용하고는 합니다. 본 글에서는 왜 많은 방법중에서 Fetch Join을 주로 사용하는지에 대해서 알아본 내용을 정리하고자 합니다. Fetch Join의 장점1. 즉시 로딩과 명시적 제어Fetch Join은 JPQL 쿼리에서 명시적으로 사용되기 때문에, 어떤 연관 데이터를 즉시 로딩할지 명확하게 정의할 수 있습니다. 이는 @EntityGraph나 @BatchSize와 같은 방법들에 비해 제어가 더 직관적입니다.SELECT h FROM HubPath h JOIN FETCH h.departureHub JOIN FETCH h.arrivalHub 위와 같이 ..