多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國(guó)內(nèi)最全I(xiàn)T社區(qū)平臺(tái) 聯(lián)系我們 | 收藏本站
阿里云優(yōu)惠2
您當(dāng)前位置:首頁 > php開源 > 綜合技術(shù) > 千山萬水之Hibernate(五)――關(guān)聯(lián)映射(一對(duì)一)

千山萬水之Hibernate(五)――關(guān)聯(lián)映射(一對(duì)一)

來源:程序員人生   發(fā)布時(shí)間:2015-05-22 08:46:22 閱讀次數(shù):2529次

知道了多對(duì)1關(guān)聯(lián)映照的映照原理,我們?cè)賮砜?對(duì)1關(guān)聯(lián)的情況,1對(duì)1分映照有兩種實(shí)現(xiàn)方案:

1對(duì)1主鍵關(guān)聯(lián)映照

對(duì)其中關(guān)聯(lián)的情況我們又各分為單向、雙向兩種,而對(duì)1對(duì)1,Hibernate采取one-to-one標(biāo)簽進(jìn)行標(biāo)識(shí)。

原理分析

我們拿人(Person)與身份證件(IdCard)為1對(duì)1關(guān)聯(lián)對(duì)象的示例,他們的實(shí)體關(guān)系圖為:
一對(duì)一關(guān)聯(lián)-單向
采取第1種方案,則Person對(duì)應(yīng)數(shù)據(jù)庫表與IdCard對(duì)應(yīng)數(shù)據(jù)庫表中的主鍵是逐一對(duì)應(yīng)的,不需要添加過剩的字段來表示外鍵。Person關(guān)聯(lián)映照文件中的配置為:

<?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping⑶.0.dtd"> <hibernate-mapping> <class name="com.tgb.hibernate.Person" table="t_person"> <id name="id"> <!-- 主鍵策略foreign --> <generator class="foreign"> <!-- property指關(guān)聯(lián)對(duì)象 --> <param name="property">idCard</param> </generator> </id> <property name="name" /> <one-to-one name="idCard" constrained="true" /> </class> </hibernate-mapping>

注:one-to-one標(biāo)簽中的 constrained=”true”表示當(dāng)前主鍵同時(shí)也是1個(gè)外鍵,參照IdCard中的主鍵。

操作示例

1.調(diào)用session的Load方法,得出Person對(duì)象的級(jí)聯(lián)班級(jí)對(duì)象IdCard

public void testLoad(){ Session session = null; Transaction tx = null; try{ session = HibernateUtils.getSession(); tx = session.beginTransaction(); Person person = (Person)session.load(Person.class, 1); System.out.println("person.name = " + person.getName()); System.out.println("person.idCard.cardNo = " + person.getIdCard().getCardNo()); session.save(person); tx.commit(); }catch(Exception e){ e.printStackTrace(); if(tx != null){ tx.rollback(); } }finally{ HibernateUtils.closeSession(session); } }

與上篇文章介紹的類似,通過one-to-one標(biāo)簽的作用,我們查詢Person對(duì)象的同時(shí),級(jí)聯(lián)查詢除IdCard對(duì)象

2.默許級(jí)聯(lián)保存Idcard機(jī)制

public void testSave(){ Session session = null; Transaction tx = null; try{ session = HibernateUtils.getSession(); tx = session.beginTransaction(); IdCard idCard = new IdCard(); idCard.setCardNo("11111111111"); Person person = new Person(); person.setName("張3"); person.setIdCard(idCard); session.save(person); tx.commit(); }catch(Exception e){ e.printStackTrace(); if(tx != null){ tx.rollback(); } }finally{ HibernateUtils.closeSession(session); } }

上篇文章中我們提到過,在援用有Transient對(duì)象的Persistent狀態(tài)的對(duì)象進(jìn)行保存時(shí),會(huì)出現(xiàn)異常,但在1對(duì)1主鍵關(guān)聯(lián)映照上不會(huì)出現(xiàn)此種情況。也就是說,1對(duì)1默許帶有cascade屬性。對(duì)1對(duì)1主鍵關(guān)聯(lián)映照,雙向關(guān)聯(lián)的配置即是在IdCard端加入one-to-one標(biāo)簽便可,此標(biāo)簽僅影響加載,不影響存儲(chǔ)。
綜合來看將來如果改成多對(duì)1則不可修改,靈活性較差、擴(kuò)大性不好。

1對(duì)1外鍵關(guān)聯(lián)映照

我們可將1對(duì)1的情況看做是多對(duì)1情況的1種極端體現(xiàn),我們可以采取many-to-one標(biāo)簽配合unique屬性來給其相對(duì)應(yīng)的表上添加外鍵字段,這類方式可解決使用主鍵關(guān)聯(lián)映照的弊端。相干映照文件以下:

<?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping⑶.0.dtd"> <hibernate-mapping> <class name="com.tgb.hibernate.Person" table="t_person"> <id name="id"> <generator class="native" /> </id> <property name="name" /> <many-to-one name="idCard" unique="true"></many-to-one> </class> </hibernate-mapping>

有關(guān)相應(yīng)的操作,可參照前1篇文章的多對(duì)1下示例。

總結(jié)

我們可以看到1對(duì)1主鍵關(guān)聯(lián)到1對(duì)1外鍵關(guān)聯(lián)的轉(zhuǎn)變可以看做是另外一種角度下看待問題,通過這樣的思想,1些本來要求刻薄的情況我們一樣可以通過另外一種方式來處理,到達(dá)相同的效果,并且實(shí)現(xiàn)將來變更的靈活應(yīng)對(duì)。

生活不易,碼農(nóng)辛苦
如果您覺得本網(wǎng)站對(duì)您的學(xué)習(xí)有所幫助,可以手機(jī)掃描二維碼進(jìn)行捐贈(zèng)
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關(guān)閉
程序員人生
主站蜘蛛池模板: 亚洲第一天堂无码专区 | 亚洲影院手机版777点击进入影院 | 欧美一区二区在线观看免费网站 | 国产欧美日韩在线人成aaaa | 久久无码av三级 | 99r8这里精品热视频免费看 | 日本综合在线观看 | 中文字幕区 | 国产精品久久久久久久 | 手机看片日韩国产一区二区 | 中文字幕亚洲一区二区三区 | 一区二区视频免费观看 | 亚洲精品乱码久久久久久蜜桃欧美 | 久久久久在线视频 | 欧美一区二区三区免费高 | 国产欧美精品一区二区三区四区 | 免费一级毛片私人影院a行 免费一级毛片一级毛片aa | 天堂福利视频在线观看 | www.亚洲精品 | 午夜视频高清在线aaa | 最近中文字幕在线观看 | 亚洲国产精品a一区二区三区 | 国产成人精品一区 | 福利99| 最近中文字幕完整在线看一 | 久夜色精品国产一区二区三区 | 国产品精人成福利视频 | 国产黄色在线网站 | 校园激情亚洲 | 国产亚洲小视频 | 国产成人精品男人免费 | 日本视频中文字幕一区二区 | 亚洲欧美一区二区三区不卡 | 久久欧美精品欧美九久欧美 | 欧美色欧美亚洲另类二区精品 | 久久精品高清 | 中国嫩模一级毛片 | 亚洲欧美日韩国产精品久久 | 亚洲天堂视频在线免费观看 | 久久久亚洲欧美综合 | 欧美成人v视频免费看 |