최대 절전 페치할 참가하십시오 가입 및 차이

어디에 있는지 파악할 수 있는 일반 참가 및 페치할 참가하십시오 desktopplatforms 돕는다구요 사용합니다.

예를 들어, 우리는 이 두 쿼리합니다

FROM Employee emp
JOIN emp.department dep

FROM Employee emp
JOIN FETCH emp.department dep

그들 사이에 무슨 차이가? 연결되었으면 어느쪽이야 때 사용하는?

질문에 대한 의견 (6)
해결책

이 두 쿼리합니다 참가하십시오 쿼리하려면 사용하고, 모든 직원이 하나 이상 있는 部门是否有人员 연관됨.

하지만 차이는. 첫 번째 쿼리하지 반품하는 경우 해당 직원들이 만든 최대 절전 모드. 모든 부서 직원들이 만든 두 번째 쿼리하지 틀렸다니까 반환 및 관련.

그래서 사용하는 경우, 두 번째 쿼리하지 할 필요가 없습니다 다시 볼 수 있는 새로운 쿼리하지 친 데이터베이스입니까 Departments 각 부하예요.

두 번째 쿼리하지 할 때 사용할 수 있습니다 합니다 미국 각 부하예요. 미 국무부는 않아도 사용할 경우, 첫 번째 질의입니다.

내가 이 링크를 할 경우 일부 적용하십시오 레커먼드 읽을 수 있는 조건 (너희는너희가 필요하게 될 것이다). https://stackoverflow.com/questions/5816417/how-to-properly-express-jpql-join-fetch-with-where-clause-as-jpa-2-criteriaq

  • 업데이트 *

39 don& 경우, t '와' 는 계속 사용할 수 있으므로, 페치할 Departments 반환되었습니다 사이의 매핑을 직원 및 部门是否有人员 (@OneToMany 'a') 가 잘 살고 있는 '페치티페드레이저'. 이 경우 모든 하크라 (페치할 '와' 방관하겠나) '에서' 그것을들추어 포함된 쿼리입니다 부하예요 all Departments. 즉, 모든 매핑 ('@ManyToOne' 와 '@OneToOne') * 토네 기본적으로 강한 의욕을 보이고 있다.

해설 (2)

[이 링크] 에서 (http://docs.jboss.org/hibernate/orm/3.3/reference/en/html/queryhql.html) 에서 주석문입니다 읽기 전에 언급한 바와 같이, 이 부분은.

&gt. A &quot fetch"; 값 또는 컬렉션에 참가하십시오 연관입니다 수 있습니다. &gt. 초기화되었습니다 부모가 함께 사용하여 객체를 하나 선택. &gt. 이는 특히 유용한 경우에 뜻한다. It &gt. 이 선언이 효과적으로 재정의됩니다 외부 조인 및 게으른 &gt. 더 연관입니다 및 매핑 파일을 컬렉션.

이 &quot 참가하십시오 FETCH"; # 39 의 효과를 갖게 될 경우 it& (페치할 = 페치티페드라지) 속성을 비디오함의 δ1 (company. 예제에서와 벨로).

단지, 이 경우, 효과 및 방법을 &quot 쿼리하지 happen&quot 합니다. 잘 알고 있다 합니다 [이] (http://docs.jboss.org/hibernate/core/4 .0/manual/en-us/html/performance.html # 성능 불러오기):

&gt. 최대 절전 모드 두 가지 직각 상: 언제, 어떻게 반입됨 협회 &gt. 그것은 반입됨. 그 혼란을 하지 않는 것이 중요합니다. 우리가 사용하는 &gt. 위해 페치할 성능을 튜닝합니다. 게으른 정의하십시오 계약을 수 있습니다. &gt. 어떤 데이터를 항상 사용할 수 있는 특정 믿지아니하며 분리되었는지 인스턴스입니다 &gt. 클래스.

이 때 &gt 연관입니다 반입됨 -; 네 &quot FETCH"; 유형

도대체 어떻게 &gt 반입됨 -; Join/select/Subselect/Batch

39 의 효과를 가질 수 있는 경우 it& 페치할 그칠 경우, 이 같은 일이 있는 部门是否有人员 세트로 δ1 부하예요 엔티티입니다:

@OneToMany(fetch = FetchType.LAZY)
private Set department;

사용할 때

FROM Employee emp
JOIN FETCH emp.department dep

'' '와' 왕실드레프 emp 얻을 수 있습니다. 하지만 일부러 때 사용할 수 있습니다 '는 최대 절전 모드' 를 계속 페치할 왕실드레프 프로세싱용으로 데이터베이스입니까 afaq 설정하는 다른 부서의.

그래서 그냥 튜닝, 그 문제에 대한 모든 결과를 가져올 (필요할 때 방관하겠나) 를 하나의 쿼리하지 (열심히 가져오는) 또는 운영까지도 쿼리하려면 rmw 이 필요할 때 (lazy 가져오는).

열심히 할 때 사용할 수 있는 한 작은 데이터 불러오기 선택 (하나의 큰 쿼리별). 게으른 가져오는 너희는너희가 쿼리하려면 rmw (많은 작은 쿼리별) 또는 사용을 한다.

페치할 사용할 때:

  • 아니 저 안에 대형 불필요한 수집 / 설정되었습니다 엔티티에는 afaq 확인할 수 있습니다

너무 긴 시간이 필요한 데이터베이스 서버 및 애플리케이션 서버로 통신을 -

그 때, 할 수 있습니다 - # 39 이 액세스하려면 rmw 취합은 don& 없다 ( 트랜잭션용 바깥쪽인지가 의 방법 / 클래스)

해설 (4)

@Onetoone 경우 매핑에서는 페치티페드라지 설정되었습니다 사용하면 쿼리하지 ss+sp (필요하므로 部门是否有人员 객체에는 스크램블된 일부로 로드되었는지 부하예요 객체에는) 는 최대 절전 모드, 어떤 것이라고 할 수 있는 모든 개별 부하예요 객체에는 패치합니다 DB 에서 이 문제를 쿼리합니다 페치할 部门是否有人员 객체에는. 나중에 코드에서 部门是否有人员 객체에는 너회가 액세스할 수 있는 모든 문제를 통해 일정한 部门是否有人员 값이 하나인 연관입니다 및 하이버네이트 않을 객체에 대한 질의를 페치할 部门是否有人员 주어진 부하예요. 이 회사는 직원 수를 최대 절전 모드 여전히 문제 같은 쿼리합니다 너희에게베풀어진 반입됨. 최대 절전 모드 모두에서 실행할 경우 위와 같은 수의 쿼리합니다 쿼리합니다 액세스하려는 部门是否有人员 객체에는 모든 직원의 객체에는

해설 (0)

드레이크: # 39 i& 말할 때, m, t # 39 의심하였더라 don& 페치할 사용할 수 있는지 알고, 그 종류는: [] '즉' List&lt, 개체, 객체 테이블이 아닌 &gt 바뀌엇어요 목록니다 부하예요.

Object[0] refers an Employee entity 
Object[1] refers a Departement entity 

페치할 사용할 때, 그 가운데 하나입니다. ',' List&lt 선택하고 그 결과 목록은 부하예요 Employee&gt 목록이 있는 데파트 망. 이 선언은 게으른 재정의됩니다 엔티티입니다.

해설 (5)