과 :최대 절전 모드 - N + 1 개 선택 쿼리기구가 1 대 1로 주소에 매핑되는 1 대 1
기구 :
<one-to-one class="Address" constrained="true" name="address" property-ref="organizationId"/>
주소 :
<many-to-one class="Organization" name="organization">
<column name="OrganizationID" not-null="false" unique="true"/>
</many-to-one>
이 쿼리는 모든 조직 +1에 대해 추가 선택을 생성합니다 :
query = session.createQuery("select o from Organization as o where o.isCool=0").setReadOnly(true);
organizations = query.list();
http://docs.jboss.org/hibernate/orm/3.3/reference/en/html/performance.html은 fetch="join"
에게 알려주지 만 이는 별 차이가 없습니다. 이 문제를 해결하는 방법? 어떤 도움을 주셔서 감사합니다.
EDIT 디버거에서 실제로 그 주소가 게으르지 않은 것을 볼 수 있습니다. 이유는 모르겠습니다.
응답 해 주셔서 감사합니다. 그러나이 모든 가져온 데이터를 메모리에 보관하고 사용하지 않는 것이 효율적입니까? 나는 hql을 사용하지 않는다. 그래서 기준을 사용해야합니까? – emmma1223
HQL을 계속 사용할 수 있습니다. 사실 FETCH JOIN 절을 사용하면 필요한 물건 (조건 o.isCool = 0이 true 인 레코드) 만 n + 1 페치를 수행하지 않고도 여전히 가져올 수 있습니다. – PaiS
나와 함께 곰, 나는 이해가 가지 않는다. 페치 조인이 주소를 초기화하지 않는다고 말하는 겁니까? – emmma1223