>  기사  >  Java  >  JPA 및 Hibernate의 JOIN 및 JOIN FETCH: 언제 각각 사용해야 합니까?

JPA 및 Hibernate의 JOIN 및 JOIN FETCH: 언제 각각 사용해야 합니까?

Linda Hamilton
Linda Hamilton원래의
2024-11-11 08:54:02300검색

JOIN vs. JOIN FETCH in JPA and Hibernate: When Should I Use Each?

JPA 및 Hibernate의 Join 및 Join Fetch

JPA 및 Hibernate로 작업할 때 일반적으로 사용되는 두 가지 조인 유형은 JOIN과 JOIN FETCH입니다. 차이점과 각 유형을 사용하는 것이 적절한 시기를 살펴보겠습니다.

쿼리 1: JOIN

FROM Employee emp
JOIN emp.department dep

이 쿼리는 연결된 부서가 하나 이상 있는 모든 직원 엔터티를 검색합니다. 이 쿼리의 결과에는 Department 개체가 느리게 로드된 Employee 개체가 포함됩니다. 이는 Hibernate가 초기 쿼리 중에 Department 개체를 검색하지 않고 처음으로 액세스할 때 Department 개체를 검색한다는 것을 의미합니다.

쿼리 2: JOIN FETCH

FROM Employee emp
JOIN FETCH emp.department dep

JOIN과 달리 JOIN은 FETCH 쿼리는 Employee 엔터티와 관련된 Department 개체를 적극적으로 로드합니다. 이로 인해 나중에 지연 로드되지 않고 초기 쿼리 중에 부서 개체가 검색됩니다.

올바른 유형 선택

JOIN과 JOIN FETCH 중 선택은 특정 애플리케이션 요구 사항에 따라 다릅니다.

  • 검색된 모든 직원에 대해 Department 개체가 필요하다고 확신하는 경우 JOIN FETCH는 다음과 같습니다. Department 개체를 가져오기 위해 후속 쿼리가 필요하지 않으므로 더 효율적인 옵션입니다.
  • 모든 Employee 엔터티에 대해 Department 개체가 필요한지 여부가 확실하지 않은 경우 일반적으로 불필요한 오버헤드를 피하기 위해 JOIN을 사용하는 것이 좋습니다. .

추가 고려 사항

  • @OneToMany 매핑이 직원 및 부서는 FetchType.EAGER로 구성되며, JOIN을 사용하면 여전히 부서 개체가 즉시 로드됩니다.
  • JOIN FETCH는 조인된 엔터티에 대한 WHERE 조건과 결합할 때 유용할 수 있습니다. 여러 JOIN보다 쿼리합니다.

위 내용은 JPA 및 Hibernate의 JOIN 및 JOIN FETCH: 언제 각각 사용해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.