中文字幕日韩精品一区二区免费_精品一区二区三区国产精品无卡在_国精品无码专区一区二区三区_国产αv三级中文在线

Hibernate延遲加載技術(shù)是什么

這篇文章主要講解了“Hibernate延遲加載技術(shù)是什么”,文中的講解內(nèi)容簡(jiǎn)單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來(lái)研究和學(xué)習(xí)“Hibernate延遲加載技術(shù)是什么”吧!

公司主營(yíng)業(yè)務(wù):成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站建設(shè)、移動(dòng)網(wǎng)站開發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實(shí)現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競(jìng)爭(zhēng)能力。創(chuàng)新互聯(lián)公司是一支青春激揚(yáng)、勤奮敬業(yè)、活力青春激揚(yáng)、勤奮敬業(yè)、活力澎湃、和諧高效的團(tuán)隊(duì)。公司秉承以“開放、自由、嚴(yán)謹(jǐn)、自律”為核心的企業(yè)文化,感謝他們對(duì)我們的高要求,感謝他們從不同領(lǐng)域給我們帶來(lái)的挑戰(zhàn),讓我們激情的團(tuán)隊(duì)有機(jī)會(huì)用頭腦與智慧不斷的給客戶帶來(lái)驚喜。創(chuàng)新互聯(lián)公司推出呼圖壁免費(fèi)做網(wǎng)站回饋大家。

Hibernate延遲加載的對(duì)象:

◆hibernate 2針對(duì)實(shí)體對(duì)象和集合
◆hibernate 3同時(shí)提供了屬性的延遲加載功能。
其中對(duì)集合的延遲加載特性意義最為重大。

實(shí)體對(duì)象的Hibernate延遲加載:

在hibernate配置文件中的class指定

集合類型的Hibernate延遲加載:

在set中指定lazy=true
這樣只有實(shí)際加載與對(duì)象相關(guān)聯(lián)的集合對(duì)象的時(shí)候,再通過session從數(shù)據(jù)庫(kù)中加載實(shí)際的數(shù)據(jù)集。
Hibernate.initialize方法可以強(qiáng)制Hibernate立即加載關(guān)聯(lián)的對(duì)象集,例如:
Hibernate.initialize(user.getAddress());
集合類型的緩存:

如果為某個(gè)集合類設(shè)定了緩存,如

<set       name="address"     table="t_address"     lazy="true"     ......  >     <cache usage="read-only"/>     <key column="user_id" />     <one-to-many class="cn.blogjava.TAddress" /> </set>

Hibernate對(duì)集合類型進(jìn)行緩存的時(shí)候,分兩部分保存。首先是這個(gè)集合中所有實(shí)體的id列表,其次才是各個(gè)實(shí)體對(duì)象。
這里制定了cache usage="read-only"只會(huì)使得Hibernate對(duì)數(shù)據(jù)索引進(jìn)行緩存。也就是說只緩存了集合中的數(shù)據(jù)索引,并不包含集合中的各個(gè)實(shí)體元素。
如果指定cache usage="read-write"才會(huì)對(duì)集合中的實(shí)體進(jìn)行緩存。

屬性的Hibernate延遲加載:

在property節(jié)點(diǎn)中聲明lazy=true,而且還需要借助Hibernate類增強(qiáng)器對(duì)POJO類的二進(jìn)制Class文件進(jìn)行強(qiáng)化處理。

hibernate中的Collection
Hibernate對(duì)JDK Collention接口的獨(dú)立實(shí)現(xiàn):
由于傳統(tǒng)的Java Set, Map, List實(shí)現(xiàn)不能滿足要求,Hibernate根據(jù)這些接口提供了自己的實(shí)現(xiàn)。

Hibernate的實(shí)現(xiàn):

◆無(wú)序集:Set, Bag, Map
◆有序集:List
Bag相當(dāng)于一個(gè)允許重復(fù)元素存在的Set。因?yàn)镠ibernate是自己的Collection實(shí)現(xiàn),所以如下語(yǔ)句會(huì)出錯(cuò),Set hset = (HashSet)user.getAddresses();會(huì)在運(yùn)行期報(bào)告一個(gè)java.lang.ClassCastException,因?yàn)閷?shí)際上返回的是一個(gè)類型為org.hibernate.collention.Set的對(duì)象。

所有我們?cè)趯慞OJO時(shí),必須用JDK Collection Interface(如Set, Map),而非特定的JDK Collection實(shí)現(xiàn)類(如HashSet, HashMap)聲明Collection型屬性的原因。例如:應(yīng)該是private Set addresses;而不是private HashSet addresses;collection類型屬性的保存過程。

例如

public class TUser implements Serializable {   private Set addresses = new HashSet();          ......  }

然后創(chuàng)建一個(gè)TUser實(shí)例后,就可以為其添加關(guān)聯(lián)的address對(duì)象:

TUser user = new TUser();  TAddress addr = new TAddress();  addr.setAddress("HongKong");  user.getAddress().add(addr);  session.save(user);

user對(duì)象在經(jīng)過Hibernate處理后發(fā)生了變化,首先,由于insert操作,產(chǎn)生了id值,并填充到user對(duì)象的id屬性,另一方面Hibernate使用了自己的collection實(shí)現(xiàn)對(duì)user中的HashSet型addresses屬性進(jìn)行了替換,并用數(shù)據(jù)對(duì)其進(jìn)行了填充。

感謝各位的閱讀,以上就是“Hibernate延遲加載技術(shù)是什么”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對(duì)Hibernate延遲加載技術(shù)是什么這一問題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!

網(wǎng)站欄目:Hibernate延遲加載技術(shù)是什么
網(wǎng)頁(yè)路徑:http://www.rwnh.cn/article44/jeecee.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供服務(wù)器托管、網(wǎng)站導(dǎo)航、手機(jī)網(wǎng)站建設(shè)、App設(shè)計(jì)、營(yíng)銷型網(wǎng)站建設(shè)、企業(yè)網(wǎng)站制作

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

小程序開發(fā)
全州县| 桃源县| 循化| 柳州市| 绥德县| 盐边县| 怀远县| 正定县| 青川县| 政和县| 辽中县| 南投市| 额济纳旗| 滨海县| 漳平市| 尉犁县| 鹤山市| 萍乡市| 沾益县| 竹北市| 长沙市| 苍南县| 榆中县| 广州市| 和田市| 双柏县| 即墨市| 鱼台县| 林州市| 科技| 山阴县| 马边| 宾川县| 鹤庆县| 泊头市| 闸北区| 兴仁县| 南涧| 托克逊县| 雅江县| 县级市|