Hibernate 4의 관계 주석
Hibernate 4와 Spring에서는 주석을 사용하여 클래스 간의 다양한 관계를 정의할 수 있습니다. 다음은 일대일, 일대다, 다대일 및 다대다 관계를 만드는 방법을 간략하게 설명합니다.
단방향 일대일 관계 :
- 소유 클래스에 @OneToOne을 사용합니다(소유 클래스의 기본 키가 다른 클래스를 참조합니다).
- 다른 클래스에는 해당 매핑이 필요하지 않습니다.
양방향 일대일 관계:
- 소유 클래스에서 @OneToOne(mappedBy = "bar")을 사용하여 관계를 나타냅니다. 다른 클래스에서 관리합니다.
- 소유 클래스를 가리키는 mappedBy를 사용하여 다른 클래스에 @OneToOne을 사용합니다.
단방향 일대다 관계 사용 사용자 관리 조인 테이블:
- 소유 클래스에 @OneToMany를 사용합니다.
- @JoinTable을 사용하여 엔터티 간의 조인 테이블을 정의합니다.
- 아니요 다른 클래스에 매핑이 필요합니다.
외래 키 매핑을 사용한 양방향 일대다 관계:
- @OneToMany(mappedBy 사용) = "bar")를 소유 클래스에 사용하세요.
- 소유 클래스를 가리키는 mappedBy를 사용하여 다른 클래스에 @ManyToOne을 사용하세요.
양방향 다대대- Hibernate 관리형 조인 테이블을 사용하는 다수:
- 두 클래스 모두에서 @OneToMany를 사용하여 자체 참조 관계를 생성합니다.
- @JoinTable을 사용하여 조인 테이블을 정의합니다.
사용자 관리형 조인 테이블 개체를 사용한 양방향 다대다:
- 두 클래스 모두에서 @OneToMany를 사용하여 자체 참조 관계 생성 .
- 별도의 클래스를 조인 테이블 개체로 정의합니다.
양방향 관계의 "소유" 측면 결정:
- 일반적으로 다른 클래스의 컬렉션이 있는 클래스는 "소유" 측으로 간주됩니다.
- 이에 따라 외래 키가 저장되는 위치와 변경 사항을 관리하는 클래스가 결정됩니다.
FetchType 선택
- Lazy fetching(기본값)은 필요한 경우에만 관련 객체를 로드합니다.
- Eager fetching(set fetchType = FetchType.EAGER)은 관련 객체를 즉시 사용하세요.
Hibernate.initialize() 또는 FetchMode를 사용하여 LazyInitializationException을 방지하세요.
- Hibernate.initialize(person.getRoles() 사용 ); 느리게 가져온 컬렉션을 즉시 로드합니다.
- 컬렉션을 즉시 로드하려면 기준에 setFetchMode("roles", FetchMode.SUBSELECT)를 사용합니다.
계단식 방향 결정:
- 계단식을 사용하여 관련 엔터티 간에 계단식으로 배열되는 작업(생성, 업데이트, 삭제)을 지정합니다.
- 필요한 경우 계단식 배열을 양방향으로 설정하지만 의미상 의미가 있는 경우에만 설정합니다.
고아 제거:
- 고아 항목(더 이상 참조되지 않는 항목)을 자동으로 삭제하려면 @OneToMany에서 orphanRemoval을 활성화하세요.
위 내용은 주석을 사용하여 Hibernate 4에서 관계를 정의하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!