>  기사  >  Java  >  주석을 사용하여 Hibernate 4에서 관계를 정의하는 방법은 무엇입니까?

주석을 사용하여 Hibernate 4에서 관계를 정의하는 방법은 무엇입니까?

Patricia Arquette
Patricia Arquette원래의
2024-11-03 10:33:02303검색

How to Define Relationships in Hibernate 4 using Annotations?

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.