2011-08-20 3 views
1

NHibernate 프로젝트에 Sets을 사용하도록 구성된 일대 다 매핑이 ​​여러 개 있습니다.NHibernate가 내부 조인 대신 외부 조인을 사용하는 데 어떤 영향을 줍니까?

프로젝트를 수행하지 않고 max_fetch_depth을 2로 설정하면 NHibernate는 항상 내부 조인 대신 외부 조인을 사용하는 것처럼 보입니다.

이유가 있습니까? 매핑 구조는 다음과 같습니다.

Category 
    +- Document.Category 
    +- Document.User 

평범한 일대 다 설정.

답변

6

Nhibernate가 내부 조인을 수행했다면, 문서가없는 카테고리는 가져 오지 않을 것임을 의미합니다.
nHibernate는 특별히 외부 쿼리를하지 않는 한 항상 외부 조인을 사용합니다.

+0

아마도 NHibernate가 모든 콜렉션 쿼리를 직접 작성하지 않으면 NHibernate가 필요한 것보다 훨씬 많은 행을 가져 오는 것이지만 말이 되겠지요? –

+1

아니 .. 왜 그렇게 말 하겠니? 'Document'를 포함하지 않는'Category' 행을 필요로하지 않습니까? –

+0

@sJohnny 대부분의 시나리오에 적합한 이유는 지금 왜 그렇게하는지 알 수 있습니다. 그러나 많은 사람들에게 이것은 거대한 레코드 세트를 생성합니다. 하지만 맞춤 기준 쿼리를 사용하여 이러한 목표를 달성 할 의향이 있다고 생각합니다. –