1.在映射對(duì)象之間建立一對(duì)多關(guān)系one-to-many
1)在一的一方的類(lèi)中添加集合屬性Set
2)在一的一方的映射文件中添加
3)使用時(shí),通過(guò)對(duì)象的getXXX方法獲取
2.在映射對(duì)象之間建立多對(duì)一關(guān)系many-to-one
1)在多的一方的類(lèi)中添加一方類(lèi)型的屬性去掉關(guān)聯(lián)字段的屬性
2)在多的一方的映射文件中添加
column="user_id">
去掉原有關(guān)聯(lián)字段的映射
3)使用時(shí),通過(guò)對(duì)象的getXXX方法獲取
3.關(guān)系使用時(shí)的技巧
1)在hbm.xml中利用fetch屬性指定抓取方式
a.fetch="join"
采用join表連接方式抓取相關(guān)對(duì)象.
b.fetch="select"(默認(rèn))
采用單獨(dú)發(fā)送一個(gè)SQL語(yǔ)句的方式查詢(xún)相關(guān)對(duì)象.
注意:在實(shí)際開(kāi)發(fā)中,不推薦在hbm.xml中利用fetch屬性控制.推薦使用HQL+join fetch方式.參考TestAddress.java的testFetch()方法
2)cascade級(jí)聯(lián)操作
對(duì)主對(duì)象操作時(shí),相關(guān)聯(lián)的對(duì)象屬性也執(zhí)行相同操作.
在hbm.xml中為關(guān)聯(lián)屬性添加cascade,可以指定
cascade="save-update":當(dāng)對(duì)主對(duì)象執(zhí)行save和update操作時(shí),相關(guān)聯(lián)的對(duì)象屬性也執(zhí)行save和update操作
cascade="delete":當(dāng)對(duì)主對(duì)象刪除時(shí),相關(guān)聯(lián)的對(duì)象屬性也執(zhí)行刪除
cascade="all":對(duì)save,update,delete操作都支持
注意:級(jí)聯(lián)刪除執(zhí)行的是n+1個(gè)delete語(yǔ)句,如果遇到n比較大時(shí),不推薦使用級(jí)聯(lián),推薦使用刪除的HQL.
"delete from Address where userId=30"
3)inverse關(guān)系控制
inverse主要用于指定兩個(gè)對(duì)象的關(guān)系由哪一方來(lái)負(fù)責(zé)維護(hù).其實(shí)就是使用update語(yǔ)句更新user_id字段的值.默認(rèn)情況下,Hibernate認(rèn)為關(guān)系維護(hù)雙方負(fù)責(zé).
為了程序效率,將關(guān)系維護(hù)工作交給多的一方處理.即在
4)formula子查詢(xún)映射
將一個(gè)子查詢(xún)結(jié)果,映射到一個(gè)屬性上.參考User.hbm.xml
2015年全國(guó)職稱(chēng)計(jì)算機(jī)考試教材(2007模 .. 定價(jià):¥225 優(yōu)惠價(jià):¥213 更多書(shū)籍 | |
全國(guó)職稱(chēng)計(jì)算機(jī)考試速成過(guò)關(guān)系列套裝:W .. 定價(jià):¥133 優(yōu)惠價(jià):¥133.0 更多書(shū)籍 |