Hibernate關係對映

2022-09-24 01:33:08 字數 1644 閱讀 2630

二、關係對映

1.關聯對映

2.繼承對映

3.復合主鍵對映

復合(聯合)主鍵對映:

通常做法是將主鍵相關字段放到乙個單獨的類中,這樣類是有要求的:

*必須實現序列化介面

*覆蓋equals和hashcode方法

(主鍵,建議使用沒有業務語義的,減少業務變更時的修改)   

4.元件對映

component對映

在hibernate中component對映採用標籤即可

component是某個實體的邏輯組成部分,它與實體類的主要差別在於,它沒有oid(物件標識)

component在ddd(領域驅動設計)中稱為值類

採用component的好處:

實現了物件模型的細粒度劃分,復用率高,含義明確,層次分明

物件模型與關係模型的設計恰恰相反,物件模型一般是細粒度的,關係模型一般是粗粒度的   

5.集合對映

完成set/ list/ array/ map的對映   

--生成主鍵

6.其他

(1)關於 cascade(級聯)屬性

級聯的意思是指定兩個物件之間的操作聯動關係,對乙個物件執行了操作之後,對其指定的級聯物件也需要執行相同的操作。

總共可以取值為:all、none、s**e-update、delete

all-代表在所有的情況下都執行級聯操作

none-在所有情況下都不執行級聯操作

s**e-update-在儲存和更新的時候執行級聯操作

delete-在刪除的時候執行級聯操作

掌握級聯的含義

*級聯是物件之間的連鎖操作,它只影響新增/刪除/修改

(2)關於lazy屬性

hibernate的lazy策略

可以使用在:

*標籤上,可以取值:true/false

*標籤上,可以取值:true/false,需要類增強工具,對位元組碼進行修改

*/標籤上,可以取值:true/false/extra

*/單端關聯標籤上,可以取值:false/proxy/noproxy      

lazy的概念:

在真正使用某個物件的時候才真正的去建立,對於hibernate才會真正的發出sql語句去載入該物件      

hibernate的lazy策略必須在session開啟狀態下有效

上的lazy只影響普通屬性

lazy策略在集合上可以取值:true/false/extra

標籤上的lazy不會影響集合上的lazy特性,上的lazy只會影響普通屬性

hibernate在單端關聯上的lazy特性

/單端關聯標籤上,可以取值:false/proxy/noproxy

標籤上的lazy不會影響單端關聯物件的lazy策略

(3)關於inverse屬性:

*可以用在一對多和多對多雙向關聯上

*預設為false,表示本端可以維護關係;

如果為true,則本端不能維護關係,會交給另一端維護關係,本端失效.    

所以一對多關聯對映我們通常在多的一端維護關係,讓一的一端失效,所以設定inverse為true

inverse和cascade屬性

*inverse是控制方向上的反轉,只影響儲存

*cascade是操作上的連鎖反應

hibernate 關係對映

color red hibernate 多對一對映 color 關聯對映的本質 將關聯關係對映到資料庫,關聯關係在物件模型域中體現為乙個或多個引用 標籤會在 多 的一端新增乙個外來鍵,指向 一 的一端,這個外來鍵是由 中的column的屬性定義的,如果忽略這個屬性,預設建立的外來鍵與實體類的屬性名相...

Hibernate 對映關係

對映關係通俗點來說 address實體類 不用配置 user實體類 編寫配置 public class user student實體類 不用配置 班級實體類 編寫配置 public class clazz.student實體類 不用配置 課程實體類 編寫配置 public class course....

Hibernate 繼承關係對映

繼承關係對映 繼承是物件導向程式設計中乙個很重要的特徵,在做物件導向的分析與設計時,經常會設計出具體繼承關聯對映的持久化類。如何把這些持久化類之間的繼承關係對映到關聯式資料庫上的問題已解決。繼承在物件模型中是is a的關係,但在關係模型中,實體之間只有has a的關係,也就是說,繼承在物件模型和關係...