엔티티의 연관 엔티티를 로드하는 전략은 두 가지가 있다. 1. 지연로딩 ( Lazy ) 2. 즉시로딩 ( Eager ) 그러나 두 가지 전략은 문제가 있다. 즉시로딩은 연관된 엔티티를 로드하려고 SELECT문이 자동으로 하나 생성되어 실행된다. 지연로딩은 연관된 엔티티에 무언가가 접근하면 SELECT문이 자동으로 생성되어 실행된다. 이를 N+1문제라 한다. 개발자는 한 개의 쿼리를 만들었는데, 자동으로 N개의 쿼리가 생성되어 실행되는 것이다. 이처럼 N개의 쿼리문이 추가로 실행된다면 반복적으로 DB와 I/O가 발생하여 성능에 좋지 못한 영향을 준다. JOIN FETCH 페치 조인의 목적은 하나의 쿼리로 연관된 엔티티를 모두 로드하는 것이다. 이는 특정 로직에 필요한 '데이터'를 추출하려는 목적이 아니다...