>  기사  >  Java  >  JPA 및 Hibernate의 `MappedBy`는 양방향 관계의 데이터 불일치를 어떻게 방지합니까?

JPA 및 Hibernate의 `MappedBy`는 양방향 관계의 데이터 불일치를 어떻게 방지합니까?

Barbara Streisand
Barbara Streisand원래의
2024-11-01 12:14:30575검색

How Does `MappedBy` in JPA and Hibernate Prevent Data Inconsistencies in Bi-directional Relationships?

JPA 및 Hibernate의 MappedBy 이해

ORM(객체 관계형 매핑)에서 엔터티 간의 양방향 관계는 무한 루프 또는 일관되지 않은 데이터 상태를 피하기 위해 신중하게 처리해야 합니다. . MappedBy는 이 문제를 해결하는 JPA 및 Hibernate 주석의 속성입니다.

MappedBy의 역할 이해:

MappedBy는 관계를 소유하고 외래 키를 소유하는 엔터티를 지정합니다. 데이터베이스의 열입니다. 비소유 엔터티의 매핑 주석에 적용되어 관계가 소유 엔터티 테이블의 외래 키로 매핑됨을 나타냅니다.

사용 권장 사항:

양방향 관계를 정의하는 경우 다음 지침을 따르는 것이 좋습니다.

  • 소유 엔터티를 식별합니다.
  • 소유 엔터티의 매핑에 @JoinColumn 주석을 추가하고 외래 키를 지정합니다.
  • 엔티티 간 조인 테이블이 필요한 경우 @JoinTable 주석을 추가합니다.
  • 소유 엔터티의 매핑 필드 이름을 참조하여 비소유 엔터티의 매핑에 @MappedBy 주석을 적용합니다.

예:

Airline 및 AirlineFlight 엔터티에서 항공사는 관계의 소유자여야 합니다. 올바른 주석은 다음과 같습니다.

<code class="java">// Airline.java
@OneToMany(mappedBy = "airline")
public Set<AirlineFlight> getAirlineFlights() { return airlineFlights; }

// AirlineFlight.java
@ManyToOne
@JoinColumn(name = "IDAIRLINE")
public Airline getAirline() { return airline; }</code>

MappedBy의 목적:

MappedBy는 두 가지 주요 목적을 제공합니다.

  • 소유 엔터티를 지정합니다. 양방향 관계에서 외래 키 중복을 방지합니다.
  • 재귀 루프나 기타 데이터 불일치 문제를 생성하지 않고 두 항목 모두에서 관계 순회를 허용합니다.

위 내용은 JPA 및 Hibernate의 `MappedBy`는 양방향 관계의 데이터 불일치를 어떻게 방지합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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