본문 바로가기
Spring Data

페치 조인(fetch join)이란?

by sangfeeeeel 2021. 12. 3.

페치 조인(fetch join)이란?


  • SQL 조인 종류 X
  • JPQL에서 성능 최적화를 위해 제공하는 기능
  • 연관된 엔티티나 컬렉션을 SQL 한 번에 함께 조회하는 기능
  • join fetch 명령어 사용
  • 페치 조인 ::= [ LEFT[OUTER] | INNER] JOIN FETCH 조인경로

예시 코드를 통해 fetch join에 대해 더 자세히 알아보겠습니다.

 

 

fetch join을 사용하지 않을때


위의 Member, Team 예시로 설명해보자면

위처럼 fetch join을 사용하지 않고 Member를 조회하여 Team의 정보까지 확인한다면,

이처럼, 기존에 @ManyToOne 을 LAZY로 걸어놨기 때문에 Team은 프록시 객체로 불러오게 되고 그로인해 member.getTeam().getName() 메서드를 호출했을때 쿼리문을 호출해서 Team정보를 찾아오기 때문에 총 3개의 쿼리문이 발생하게 됩니다. 즉, N + 1 문제가 발생하게 되는것입니다. 여기서 1은 최초의 Member을 조회하는 쿼리이고 , N은 Team의 getName()메서드를 호출하여 발생하는 쿼리문을 의미합니다. 

 

 

fetch join을 사용한다면..


fetch join을 사용하여 데이터를 조회한다면

 

위처럼 최초에 Member와 Team의 정보를 join하여 한번에 불러오게 되고, 별도로 발생하는 쿼리문없이 정보를 한번에 조회할 수 있게됩니다.

'Spring Data' 카테고리의 다른 글

즉시 로딩과 지연 로딩  (0) 2021.11.27
프록시란?  (0) 2021.11.26
엔티티의 생명주기  (0) 2021.11.24
영속성 컨텍스트  (0) 2021.11.24