실무 환경에서 연관관계 엔티티의 경우 성능상의 이슈를 방지 하기 위해 기본적으로 LAZY 모드로 FetchType 을 설정하게 된다.
이럴 경우 JPQL 에서 LAZY 모드에 우선시 하여 연결된 엔티티(@ManyToOne) 또는 엔티티 컬렉션 (@OneToMany) 을 한번에 가져오고자 할때 fetch join을 사용한다.
JPQL 쿼리 구문은 아래와 같다.
SELECT c FROM Customer c LEFT JOIN FETCH c.orders WHERE c.id = :customerId
Fetch Join을 사용할 경우 Customer 와 Orders 가 Left Join 되어 Lazy 모드에 관계 없이 실행되는 순간 영속성 컨텍스트에 저장되어 데이터를 바로 사용 할 수 있게 된다.