目錄
理解JPA和Hibernate中的mappedBy
首頁 Java java教程 JPA 和 Hibernate 中的「mappedBy」屬性如何協助管理雙向關係?

JPA 和 Hibernate 中的「mappedBy」屬性如何協助管理雙向關係?

Nov 03, 2024 am 06:34 AM

How does the `mappedBy` attribute in JPA and Hibernate help manage bidirectional relationships?

理解JPA和Hibernate中的mappedBy

簡介

物件映射中的雙向關係通常需要仔細處理以避免資料庫不一致。 Hibernate 提供了一種簡潔的語法,mappedBy,來建立這些關係。本文解釋了JPA和Hibernate中mappedBy的用途和用法。

什麼是mappedBy?

MappedBy指定擁有者實體的主鍵儲存在所屬表中的欄位。它允許您映射雙向關係,其中只有一個表具有另一個表的外鍵。這可以確保所有者實體擁有關係的所有權並避免循環關係。

mappedBy

MappedBy 的目的解決了避免重複外鍵約束的問題雙向關係。透過將一張表指定為擁有者,並將其主鍵儲存在另一張表中,可以保證資料一致性。

用法

要使用mappedBy,需要註解具有mappedBy 屬性的子實體中的@JoinColumn 或@JoinTable。此屬性採用擁有者實體中表示關係的屬性的名稱。

範例

考慮查詢中提供的範例:

<code class="java">@OneToMany(fetch=FetchType.LAZY, cascade = {CascadeType.ALL})
@JoinColumn(name="IDAIRLINE")
public Set&lt;AirlineFlight&gt; getAirlineFlights() {
    return airlineFlights;
}</code>
登入後複製

@JoinColumn 註解將外鍵限制指派給AirlineFlight 資料表中的。但是,缺少mappedBy屬性。

要讓Airline成為關係的擁有者,我們可以修改註解如下:

<code class="java">@OneToMany(fetch=FetchType.LAZY, cascade = {CascadeType.ALL})
@JoinColumn(name="IDAIRLINE", mappedBy="airline")
public Set&lt;AirlineFlight&gt; getAirlineFlights() {
    return airlineFlights;
}</code>
登入後複製

透過新增mappedBy="airline",我們表示AirlineFlight 表中的IDAIRLINE 欄位是航空公司實體的主鍵。這建立了一種雙向關係,航空公司擁有 AirlineFlight 實例,而無需在航空公司表中使用重複的外鍵。

以上是JPA 和 Hibernate 中的「mappedBy」屬性如何協助管理雙向關係?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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

熱門文章

倉庫:如何復興隊友
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱門文章

倉庫:如何復興隊友
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱門文章標籤

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

2025年的前4個JavaScript框架:React,Angular,Vue,Svelte 2025年的前4個JavaScript框架:React,Angular,Vue,Svelte Mar 07, 2025 pm 06:09 PM

2025年的前4個JavaScript框架:React,Angular,Vue,Svelte

Java的類負載機制如何起作用,包括不同的類載荷及其委託模型? Java的類負載機制如何起作用,包括不同的類載荷及其委託模型? Mar 17, 2025 pm 05:35 PM

Java的類負載機制如何起作用,包括不同的類載荷及其委託模型?

如何將Maven或Gradle用於高級Java項目管理,構建自動化和依賴性解決方案? 如何將Maven或Gradle用於高級Java項目管理,構建自動化和依賴性解決方案? Mar 17, 2025 pm 05:46 PM

如何將Maven或Gradle用於高級Java項目管理,構建自動化和依賴性解決方案?

Node.js 20:關鍵性能提升和新功能 Node.js 20:關鍵性能提升和新功能 Mar 07, 2025 pm 06:12 PM

Node.js 20:關鍵性能提升和新功能

冰山:數據湖桌的未來 冰山:數據湖桌的未來 Mar 07, 2025 pm 06:31 PM

冰山:數據湖桌的未來

如何使用咖啡因或Guava Cache等庫在Java應用程序中實現多層緩存? 如何使用咖啡因或Guava Cache等庫在Java應用程序中實現多層緩存? Mar 17, 2025 pm 05:44 PM

如何使用咖啡因或Guava Cache等庫在Java應用程序中實現多層緩存?

如何在Java中實施功能編程技術? 如何在Java中實施功能編程技術? Mar 11, 2025 pm 05:51 PM

如何在Java中實施功能編程技術?

Spring Boot Snakeyaml 2.0 CVE-2022-1471問題已修復 Spring Boot Snakeyaml 2.0 CVE-2022-1471問題已修復 Mar 07, 2025 pm 05:52 PM

Spring Boot Snakeyaml 2.0 CVE-2022-1471問題已修復

See all articles