2010-11-18 7 views
1
@Entity public class Organization {} 

@Entity public class User { 
    @ManyToOne 
    Organization org; 
} 

위의 코드에 @ManyToOne interface는 "Organization org"로 모델링 된 @ManyToOne 인터페이스에서 전체 개체 대신 외래 키를 노출 할 수 있을까 . 난 그냥 Integer orgId로 모델링 할 수 없기 때문에 지속성을 위해 전체 Organization 객체를로드하는 것을 피할 수 있습니다.은 단지 조직의 ID가 데이터베이스에 저장하더라도, 단지

때때로 다른 조직의 사용자를 일괄 적으로 가져올 때 사용자 지속성 자체가 아닌 조직로드에 더 많은 시간이 소요됩니다. 다른 사람들이이 문제를 어떻게 처리하고 있는지 알고 싶습니다.

답변

2

전체 조직 객체가로드되지 않도록 Hibernate 지연로드 (FetchType.LAZY)에 @ManyToOne(fetch=FetchType.LAZY)을 사용해야합니다. 만약 당신이 user.org.id에 접근한다면 hibernate는 organization_id를 찾기 위해 전체 테이블에 가입하지 않는 것을 알게 될 것이다.

http://docs.jboss.org/hibernate/annotations/3.5/reference/en/html_single/#entity-hibspec-singleassoc-fetching

를 참조하십시오 그리고 당신이 당신의 코드에서 사용할 수있는 유일한 필드가 정말 있다면 예 당신은 Integer orgId를 매핑 할 수 있습니다.