Spring/Spring Boot

[JPA] Fetch join 과 Join 차이점

민돌v 2022. 4. 20. 18:12

fetch join은 불러온 데이터까지 영속성 컨텍스트에 저장하지만

join은 불러온 데이터를 영속성 컨텍스트에 저장하지 않는다...!

 

Fetch Join

  • 조회 주체가 되는 엔티티와 연관 관계의 엔티티(JOIN) 까지 모두 조회하여 영속화한다.
  • 즉, 2개의 엔티티 모두 영속성 컨텍스트로 관리되어진다.

 

일반 Join

  • 조회 주체가 되는 엔티티만 조회하고 영속화한다.
  • 만약 연관 관계의 엔티티 데이터를 사용해야 할 경우 별도의 조회 쿼리문을 실행 해야 함.
    • FetchType.EAGER 일 경우, 연관 관계의 엔티티를 영속화하기 위해 N번의 쿼리를 발생시킴.
    • FetchType.LAZY 일 경우, 최초 조회시 획득한 id 로 조회를 N번해야함.

 

 

 

 

[참고]

https://velog.io/@heoseungyeon/Fetch-Join-vs-%EC%9D%BC%EB%B0%98-Joinfeat.DTO

https://www.inflearn.com/questions/59632