hihernate一對多關聯對映

2022-09-04 05:45:11 字數 1678 閱讀 5915

hihernate一對多關聯對映

一對多關聯對映利用了多對一關聯對映原理

多對一關聯對映:在多的一端加入乙個外來鍵指向一的一端,它維護的關係是多指向一

一對多關聯對映:在多的一端加入乙個外來鍵指向一的一端,它維護的關係是一指向多

舉個例子員工和老闆。你說是老闆記員工比較容易還是員工記老闆比較容易呢?很明顯記少的比較容易啊,能維護二者的關係也能減少工作量。hibernate當然也是這麼做的。

也就是說一對多和多對一的對映策略是一樣的,只是站的角度不同

在關係型資料庫理論中,「多對一」關聯同於「一對多」關聯,且為了消除資料冗餘,在兩個關係之間不存在「多對多」關聯,「多對多」關聯要通過連線表來實現。因此在關係型資料庫中只有「一對一」和「一對多(多對一)」,且都是單向的。

以教師與學生的關係舉例,乙個學生一門課有乙個教師,乙個教師一門課就有多個學生。

多對一:(即單向一對多)

public class teacher

public class student

一對多:

public class teacher

public class student

雙向一對多,即一對多+單向一對多

public class teacher

public class student

inverse:負責控制關係,決定是有誰來維護表和表之間的關係的,預設為false。

也就是關係的兩端都能控制,但這樣會造成一些問題,更新的時候會因為兩端都控制關係,於是重複更新。一般來說有一端要設為true。

set的inverse屬性決定是否把對set的改動反映到資料庫中去。inverse=false————反映;inverse=true————不反映」inverse屬性預設為false

我們說inverse設立不當會導致效能低下,其實是說inverse設立不當,會產生多餘重複的sql語句甚至致使jdbc exception的throw。這是我們在建立實體類關係時必須需要關注的地方。

一般來說,inverse=true是推薦使用,

雙向關聯中雙方都設定 inverse=false的話,必會導致雙方都重複更新同乙個關係。

但是如果雙方都設立inverse=true的話,雙方都不維護關係的更新,這也是 不行的。

好在一對多中的一端:many-to-one預設是inverse=false,避免了這種錯誤的產生。

但是多對多就沒有這個預設設定了,所以很 多人經常在多對多的兩端都使用inverse=true,結果導致連線表的資料根本沒有記錄,就是因為他們雙分都沒有責任維護關係。

所以說,雙向關聯中最 好的設定是一端為inverse=true,一端為inverse=false。

一般inverse=false會放在多的一端,那麼有人提問了, many-to-many兩邊都是多的,inverse到底放在哪兒?其實hibernate建立多對多關係也是將他們分離成兩個一對多關係,中間連線乙個連線表。所以通用存在一對多的關係,也可以這樣說:一對多是多對多的基本組成部分。

(1)對one-to-many而言 (設定inverse=false),改變set,會讓hibernate執行一系列的update語句。

(2)對many-to-many而言,改變set,只修改關係表的資料,不會影響many-to-many的另一方。

(3)雖然one-to-many和many-to-many的資料庫操作不一樣,但目的都是乙個:維護資料的一致性。

Android ormlite 一對多關聯對映筆記

上次看到有人說道android query框架 查了一下資料 真是好用阿。然後又看到推薦了解ormlite 今天又去看了下ormlite 第乙個當然是實驗關聯映 然後發現它的一對多實現好像跟hibernate的使用不太一樣 記錄下來。等下再看看多對多怎麼實現的。先建立public class cus...

Spring Data JPA的一對多關聯對映

2.spring data jpa一對多的相關操作 客戶表的建表語句 create table cst customer cust id bigint 32 not null auto increment comment 客戶編號 主鍵 cust name varchar 32 not null c...

hibernate 一對多關聯

雖然老師說不提倡使用一對多的對映,一般情況下推薦使用多對一設定實現,他們的效果是一樣的,但是我們還是簡單的講了一點實現方法,以後估計很少用吧,記到這吧,說不定不用很快就想不起來了 現在定義了兩個bean,乙個是hospital,另外乙個叫做doctor.在hospital中的屬性為 private ...