2011-11-10 2 views
0

나는 Hibernate를 가진 객체 영속성에 대해 새로운 것이다. 나도 게으른 거짓말, 열망하는 내용과 즉각적인 내용의 차이점을 이해하기 위해 책을 읽었지 만 어떤 차이점도 보이지 않습니다. 어떤 도움 ??lazy = false, eager 및 immediate fetching의 차이점은 무엇입니까?

미리 감사드립니다. 나는 "즉시"생각

+0

가능한 복제본 : http://stackoverflow.com/questions/3836344/what-is-the-difference-between-hibernate-initialize-and-eager-fetching –

답변

1

는 소리

게으른은 "열망"(구현을 최대 절전 모드 열망되는 JPA, 정의)의 동의어입니다. 당신이해야 할 때까지는 아무 것도하지 마십시오. 열정적 인 의미는 ... 소리처럼.

Foo에 Collection이 있고 이것을 lazy로 설정하면 해당 컬렉션에 내용이 필요할 때만 선택,로드 등이 이루어 지지만 열망하는 경우에는 그 시간에 Bars가로드됩니다 Foo를로드합니다. 엔티티 컬렉션을 열심히로드하는 엔티티 컬렉션을 열심히로드하는 경우 문제가 될 수 있습니다.

그러나 모든 게으른 경우 쿼리 및 왕복 횟수가 초과 될 수 있습니다. 엔티티의 사용 방법에 맞는 것을 선택해야합니다. 당신이 엄지 손가락의 한 줄 규칙을 원하는 경우

게으른와

시작 .. 즉각적이고 열망 가져 오는 사이

+0

더그의 게시물에서 이미 언급 한 문제에 대해 " n + 1 쿼리 문제 "예를 들어 [이] (http://stackoverflow.com/questions/97197/what-is-the-n1-selects-problem) SO 게시물. – Voo

1

주요 차이점은 즉시 페치 함께, 두 개의 쿼리가의 소유 개체에 대한 하나 다른 해고가 관련 개체. 그러나 eager fetching을 위해서, 내부 조인/외부 조인을 포함하여 하나의 질의 만이 실체와 관련된 객체를 얻는다.

관련 문제