3
게으른로드 된 객체에 중첩 된 값을로드하는 것이 가장 좋은 방법인지 궁금합니다. 이 점을 더 잘 설명하는 예제를 제공하고 있습니다. 내가하고 싶은 예를 들어HQL/Nested Eager Loading
public class A{
private B b; //Lazy loaded
private C c; //Lazy loaded
private D d; //Lazy loaded
}
public class B{
private E e; //Lazy loaded
private F f; //Lazy loaded
}
public class C{
}
public class D{
}
:
System.out.println(a.getB().getE());
나는 위의 문을 실행 한 경우 내가 게으른로드 예외를 얻을 것입니다.
나는 항상 다음과 같은 작업을 수행 할 수
for (A a : somePossiblyLargeList) {
org.hibernate.Hibernate.initialize(a.getB().getE());
}
하지만 분명히 성능을 빨아 것이다.
특정 중첩 된 필드로 미리 채워진 개체를 반환하는 사용자 지정 HQL 쿼리를 작성할 수있는 방법이 있습니까?
감사합니다.
우수, 나는 그것을 확인해 보겠습니다. 감사! – user973479
내 실제 상황이 내 예제보다 좀 더 까다 롭다고 생각합니다 ... 이것은 AB와 A_Lnk_B라는 링크 테이블 간의 다 대다 매핑입니다. 따라서 클래스 A는 집합을 포함합니다. 그 목록에서 모든 B에 대한 ID를 반복해야 할 것입니다. 그런 다음 B에서 E를 찾으려면 B에있는 ID를 사용합니다.이 항목이 Java A 개체로 다시 저장되는 방법을 개념화하는 데 어려움이 있습니다 ... –
user973479
a 선택 a 왼쪽 a join fetch a.aLinkBs alb 왼쪽 join 페치 alb.bb left join fetch be e where ... –