對映實體關聯關係

2021-07-27 16:06:11 字數 2003 閱讀 9357

乙個類中有兩個一對一關聯。

class a

class b

a表

idname

home_id//指向b表中的id,外來鍵

company_id//指向b表中的id,外來鍵

b表address

street

id

a對映檔案:

cascsde="all"

/>

b對映檔案:

只有乙個一對一關聯。

class a

class b

a表

idname

//這兩個表共享主鍵,id是一樣的

b表id//作為主鍵的同時,作為外來鍵參照a表

address

a對映檔案:

b對映檔案:

//oid要用foreign策略

a

class a

class b

要建立乙個中間表

a表

idname

b表id

address

a_b表

a_id//a_id和b_id作為聯合主鍵,a_id作為a表的外來鍵,b_id作為b表的外來鍵

b_id

a對映檔案:

也可以用list:

雙向多對多必須把一端的inverse為true。inverse為true一段可以使用,。inverse為false的一端,可以使用,,,。

1.關聯兩端使用元素

class a

class b//表和單向多對多一樣

a對映檔案:

b對映檔案

2.inverse為true的一端使用bag

為什麼inverse為true的那端不能使用list,map之類的呢:因為這些元素有排序。

如果兩個類都是list集合,而沒有inverse的那端可以更新索引,有inverse的那端不能同步更新索引,所以如果索引變化了就不會同步更新,就出問題。

如果在inverse那端勒種定義的是list,那麼就是用bag元素,和的區別是:都允許放重複物件,都不支援索引位置排序,要求連線表中一定要有**主鍵,沒有這個要求,一般用於一對多或多對多的inverse端。

3.使用元件類集合

兩個多對多的類可以使用乙個元件型別的類,來實現多對多,而不是用主鍵當外來鍵關聯兩個類的表。

calss a

class b

class a_b

a表

idname

b表id

address

a_b表//表中所有字段作為聯合主鍵

a_id//外來鍵

b_id//外來鍵

name

a對映檔案:

b的對映檔案:

4.把多對多關聯分解為兩個一對多關聯

在元件型別中新增oid,可以打乙個多對多拆成兩個一對多。

a對映檔案:

b對映檔案:

因為a_b現在有oid了,所以有對映檔案:

Hibernate 實體關聯關係對映

hibernate 實體關聯關係對映 花了三天的業餘時間,終於寫完了hibernate關聯關係對映的所有例項,感覺還應該總結一下。hibernate對映關係錯綜複雜,在實際中真的都能用到嗎?不用行嗎?在我看來,hibernate提供這些對映關係,常用就是一對一和多對一,並且在能不用連線表的時候盡量不...

Hibernate實體關聯對映關係

hibernate關聯關係對映,包括單向關聯和雙向關聯,而 單向關聯又有 一對一外來鍵單向關聯 一對一主鍵單向關聯 一對一連線表單向關聯 一對多外來鍵單向關聯 一對多連線表單向關聯 多對一外來鍵單向關聯 多對一連線表單向關聯 多對多單向關聯 雙向關聯有 一對一外來鍵雙向關聯 一對一主鍵雙向關聯 一對...

JPA實體關聯關係對映之概述

一 簡介 首先來說關聯關係是物件導向分析,物件導向設計最重要的部分,jpa是完全可以通過對映來簡化資料持久化到資料,和 hibernate 一樣,jpa 的關聯關係也分為兩種,一種是單向關聯,一種是雙向關聯 單向關聯 只需要單向訪問關聯端,比如說 我們只能通過某一學期訪問這學期的課程,而不能通過課程...