2013-07-05 4 views
1

많은 게으른 초기화가 있지만 모든 게으른 초기화가 있지만 매번 관계의 여러면을 쿼리하여 다른 [select one]을 선택하고 부모에게 가져온다. 나는 읽었다. 여기에 스택에 다른 게시물에 말하기 성능에 좋음 VTable에 대한 클래스 final을 선언하지만 다른 게시물에서는 최종 클래스와 다 대일 관계가있는 경우에는 관계의 한면을 가져옵니다. 사실 내 수업에서 최종 수정자를 제거하고 모든 것이 정상적으로 된 이유는 최종 수정자가 관계의 한면을 모든 게으른 초기화 덕분에 열심히 가져온 이유입니다.최대 절전 모드 ManyToOne Lazy Not Working final 클래스

답변

0

final 키워드를 사용하면 누구든지 클래스를 재정의하고 그것의 방법의.

lazy-loading을 구현하기 위해, hibernate는 부모 오브젝트의 인스턴스를 프록시에 의해 많은면에서 바꿉니다. 처음 호출 될 때이 프록시는 데이터베이스에서 상위의 데이터를로드합니다.

프록시는 Parent 클래스의 인스턴스 여야합니다. 그러나 그것의 메소드는 다른 것을해야하기 때문에 Parent 타입이 될 수 없다 : 처음으로 호출 된 SQL 쿼리를 실행한다. 따라서 프록시는 실제로 Parent의 서브 클래스 (런타임에 동적으로 생성됨)입니다. 그리고 서브 클래스가되기 위해서는 부모 클래스가 최종 클래스가 될 수 없습니다.

그래서 final은 최대 절전 모드 엔티티에서 피해야하며, 그렇지 않으면 프록시가 필요하지 않으므로 지연로드가 작동하지 않습니다.