新聞中心
Hibernate對象持久化技術(shù)如何實現(xiàn)呢?本文將教你如何更簡單更加快速的學(xué)會Hibernate對象持久化技術(shù)。

創(chuàng)新互聯(lián)技術(shù)團(tuán)隊10年來致力于為客戶提供成都做網(wǎng)站、網(wǎng)站設(shè)計、品牌網(wǎng)站建設(shè)、網(wǎng)絡(luò)營銷推廣、搜索引擎SEO優(yōu)化等服務(wù)。經(jīng)過多年發(fā)展,公司擁有經(jīng)驗豐富的技術(shù)團(tuán)隊,先后服務(wù)、推廣了上1000+網(wǎng)站,包括各類中小企業(yè)、企事單位、高校等機(jī)構(gòu)單位。
Hibernate對象持久化類(persistent class)新實例化的對象是瞬時(Transient)的。 我們可通過將瞬時(Transient)對象與session關(guān)聯(lián)而把它變?yōu)槌志?Persistent)的。
- DomesticCat fritz = new DomesticCat();
- fritz.setColor(Color.GINGER);
- fritz.setSex('M');
- fritz.setName("Fritz");
- Long generatedId = (Long) sess.save(fritz);
如果Cat的持久化標(biāo)識(identifier)是generated類型的, 那么該標(biāo)識(identifier)會自動在save()被調(diào)用時產(chǎn)生并分配給cat。 如果Cat的持久化標(biāo)識(identifier)是assigned類型的,或是一個復(fù)合主鍵(composite key), 那么該標(biāo)識(identifier)應(yīng)當(dāng)在調(diào)用save()之前手動賦予給cat。 你也可以按照EJB3 early draft中定義的語義,使用persist()替代save()。
此外,你可以用一個重載版本的save()方法。
- DomesticCat pk = new DomesticCat();
- pk.setColor(Color.TABBY);
- pk.setSex('F');
- pk.setName("PK");
- pk.setKittens( new HashSet() );
- pk.addKitten(fritz);
- sess.save( pk, new Long(1234) );
如果你持久化的對象有關(guān)聯(lián)的對象(associated objects)(例如上例中的kittens集合) 那么對這些對象(譯注:pk和kittens)進(jìn)行持久化的順序是任意的(也就是說可以先對kittens進(jìn)行持久化也可以先對pk進(jìn)行持久化), 除非你在外鍵列上有NOT NULL約束。 Hibernate不會違反外鍵約束,但是如果你用錯誤的順序持久化對象(譯注:在pk持久化之前持久化kitten),那么可能會違反NOT NULL約束。
通常你不會為這些細(xì)節(jié)煩心,因為你很可能會使用傳播性Hibernate對象持久化(transitive persistence)功能自動保存相關(guān)聯(lián)那些對象。 這樣連違反NOT NULL約束的情況都不會出現(xiàn)了 - Hibernate會管好所有的事情。 傳播性持久化(transitive persistence)將在本章稍后討論。
文章題目:簡單學(xué)會Hibernate對象持久化
標(biāo)題鏈接:http://m.5511xx.com/article/cdgehse.html


咨詢
建站咨詢
