成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Hibernate中get和load方法的區別

開發 后端
本文向您介紹Hibernate中的get方法和Load方法,并簡單說明Hibernate get方法和Hibernate load方法的兩個重要區別。

這次我們來談一下Hibernate3.2 Session加載數據時get和load方法的區別(Hibernate 3以后的版本就用get()方法取代find()這個方法了),其實這個在網上有很多的論述,可大多語焉不詳或經不起實踐的推敲,讓很多初學者學的滿腹疑竇,現在我給大家講解一下:

1. 對于Hibernate get方法,Hibernate會確認一下該id對應的數據是否存在,首先在session緩存中查找,然后在二級緩存中查找,還沒有就查詢數據庫,數據庫中沒有就返回null。這個相對比較簡單,也沒有太大的爭議。主要要說明的一點就是在這個版本中get方法也會查找二級緩存!

2. Hibernate load方法加載實體對象的時候,根據映射文件上類級別的lazy屬性的配置(默認為true),分情況討論:

(1)若為true,則首先在Session緩存中查找,看看該id對應的對象是否存在,不存在則使用延遲加載,返回實體的代理類對象(該代理類為實體類的子類,由CGLIB動態生成)。等到具體使用該對象(除獲取OID以外)的時候,再查詢二級緩存和數據庫,若仍沒發現符合條件的記錄,則會拋出一個ObjectNotFoundException。

(2)若為false,就跟Hibernate get方法查找順序一樣,只是最終若沒發現符合條件的記錄,則會拋出一個ObjectNotFoundException。

這里get和load有兩個重要區別:

如果未能發現符合條件的記錄,Hibernate get方法返回null,而load方法會拋出一個ObjectNotFoundException。
load方法可返回沒有加載實體數據的代理類實例,而get方法永遠返回有實體數據的對象。(對于load和get方法返回類型:好多書中都說:“get方法永遠只返回實體類”,實際上并不正確,get方法如果在session緩存中找到了該id對應的對象,如果剛好該對象前面是被代理過的,如被load方法使用過,或者被其他關聯對象延遲加載過,那么返回的還是原先的代理對象,而不是實體類對象,如果該代理對象還沒有加載實體數據(就是id以外的其他屬性數據),那么它會查詢二級緩存或者數據庫來加載數據,但是返回的還是代理對象,只不過已經加載了實體數據。)
總之對于get和load的根本區別,一句話,hibernate對于load方法認為該數據在數據庫中一定存在,可以放心的使用代理來延遲加載,如果在使用過程中發現了問題,只能拋異常;而對于get方法,hibernate一定要獲取到真實的數據,否則返回null。

***,我們分析下為什么網路上那么多關于二者區別的文章不太準確!首先可能是版本問題,Hibernate版本不同,運行機制不太一樣;其次就是很多朋友只是把自己經驗所得與人分享,并沒有經過全方位代碼的檢測;***就是有些技術牛人,表達比較隨意。所以我希望大家以后學習知識的時候不要盲從他人迷信權威,一定要綜合多方資料,比較和整理,再經過自己實踐檢驗,這樣得到的知識才是真實有效的。

【編輯推薦】

  1. 使用MyEclipse開發***個Hibernate程序
  2. Hibernate 中Clob字段的使用
  3. Hibernate自動生成標
  4. 項目添加Hibernate支持
  5. Hibernate查詢語言HQL 八大要點


 

責任編輯:book05 來源: 百度博客
相關推薦

2009-06-29 18:32:30

Hibernate

2009-06-12 16:24:44

Hibernate lHibernate g

2009-09-22 13:14:29

Hibernate gHibernate l

2011-06-08 11:05:38

getpost

2009-06-12 16:17:48

Hibernate l

2011-06-08 11:02:14

GetPost

2011-08-11 10:22:59

ibatishibernate

2020-09-24 10:09:01

GETPOST前端

2011-07-20 17:48:07

C++

2011-07-20 17:31:12

C++

2009-06-24 08:02:15

Hibernateupdate與save

2009-06-18 11:43:40

Hibernate uHibernate s

2009-09-24 13:25:58

Hibernate m

2009-06-12 16:00:13

Session方法Hibernate

2009-06-12 15:36:24

Hibernate fcreateQuery

2021-12-28 20:06:43

JavaScript開發數組

2009-06-30 14:11:00

Hibernate緩存

2014-07-24 10:00:21

2009-06-12 14:52:21

cascadeinverseHibernate

2023-11-29 07:47:29

Golang函數
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 日韩成人精品 | 欧美午夜影院 | 久久久久成人精品 | 在线视频一区二区三区 | 国产精品久久久爽爽爽麻豆色哟哟 | 欧美在线一二三 | 中文字幕av在线一二三区 | 蜜臀久久99精品久久久久久宅男 | 日韩资源 | 精品久久久久久久久久久 | 欧美黄 片免费观看 | 久久久一二三 | 精品中文字幕在线 | 久久中文字幕一区 | 国产99精品 | 天天色综 | 一区二区三区四区av | 欧美中文字幕一区二区 | 欧美精品一区二区三区在线 | 男人午夜视频 | 中文字幕国产精品 | 中文字幕一区二区三区四区五区 | 91精品国产综合久久久久久丝袜 | 欧美成人精品在线 | 91精品国产乱码久久久久久久久 | 亚洲国产情侣自拍 | 亚洲精品一区二区三区蜜桃久 | 一区二视频 | eeuss国产一区二区三区四区 | 亚洲一区 中文字幕 | 91看国产 | 欧美三区 | 成人免费视频观看视频 | 午夜精品久久久久久久久久久久 | 风间由美一区二区三区在线观看 | 黄色高清视频 | 精品一区久久 | 久久久影院 | 精品日韩在线 | 国产精品久久国产愉拍 | 综合色婷婷 |