首頁  >  文章  >  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 實體中,Airline 應是關係的擁有者。正確的註解是:

<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