首頁  >  文章  >  Java  >  `MappedBy` 如何促進 JPA 和 Hibernate 中的雙向關係?

`MappedBy` 如何促進 JPA 和 Hibernate 中的雙向關係?

DDD
DDD原創
2024-11-01 21:45:02875瀏覽

How Does `MappedBy` Facilitate Bidirectional Relationships in JPA and Hibernate?

了解JPA 和Hibernate 中的MappedBy

在JPA 和Hibernate 等物件關係映射(ORM) 框架中,MappedByate 是一個有用的物件關係映射(ORM) 框架中,MappedByate 是一個有用的物件關聯註釋在實體類別之間建立雙向關係。此註解用於一對多和多對一關係的上下文中。

建議用法

MappedBy 的建議用法如下:

  • 一對多關係: 在一對多🎜> 在一對多關係關係中,關係的「多」方(有集合的一方)應該有MappedBy註解。此註記指定保存外鍵約束的關係的「一」側欄位的名稱。
  • 多對一關係: 在多對一關係中關係中,關係的「一」側(具有單一引用對象的一側)應具有 MappedBy 註釋。此註解指定關係的「多」端中保存外鍵約束的欄位名稱。

MappedBy 的用途

MappedBy 服務幾個用途:

  • 雙向曆關係中,MappedBy 允許您在兩個方向上遍歷關係,而不需要在兩個表中都明確地定義外鍵。
  • 最佳化:
  • 透過指定關係的所有權,MappedBy 可以避免不必要的連接表或外鍵約束,從而優化資料庫效能。
範例

在您提供的範例中,擁有許多AirlineFlight 的航空公司和屬於一家航空公司的AirlineFlight,MappedBy 應在AirlineFlight 類別中使用,如下所示:

在此範例中,@ MapsId 註解表示AirlineFlight 中的IDAIRLINE 欄位用作Airline 實體的外鍵限制。透過在這裡使用 MappedBy,您可以在 Airline 和 AirlineFlight 之間建立雙向關係,而不需要兩個表中的外鍵約束。
<code class="java">@Entity
@Table(name="AirlineFlight")
public class AirlineFlight {
    // ... other attributes ...

    @ManyToOne(fetch=FetchType.LAZY)
    @JoinColumn(name="IDAIRLINE", nullable=false)
    @MapsId
    private Airline airline;
    // ... other attributes ...
}</code>

以上是`MappedBy` 如何促進 JPA 和 Hibernate 中的雙向關係?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn