> Java > java지도 시간 > JPA 및 Hibernate의 JOIN 및 JOIN FETCH: 언제 각각 사용해야 합니까?

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

Linda Hamilton
풀어 주다: 2024-11-11 08:54:02
원래의
414명이 탐색했습니다.

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으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿