成人免费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

2011-07-20 17:31:12

C++

2009-06-24 08:02:15

Hibernateupdate與save

2020-09-24 10:09:01

GETPOST前端

2011-07-20 17:48:07

C++

2009-06-18 11:43:40

Hibernate uHibernate s

2021-12-28 20:06:43

JavaScript開發數組

2009-09-24 13:25:58

Hibernate m

2009-06-12 16:00:13

Session方法Hibernate

2009-06-12 15:36:24

Hibernate fcreateQuery

2014-07-24 10:00:21

2009-06-30 14:11:00

Hibernate緩存

2009-06-12 14:52:21

cascadeinverseHibernate

2009-09-22 13:12:25

Hibernateibatis
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 看av片网站| 日韩在线小视频 | 国产色婷婷精品综合在线播放 | 欧美自拍网站 | 亚洲视频一区在线观看 | 国产乱码精品一区二区三区中文 | 亚洲精品久久久久久一区二区 | 欧美日韩国产综合在线 | 国产高清视频一区 | 亚洲 成人 av | 久久99久久98精品免观看软件 | 日本黄色片免费在线观看 | 午夜在线电影网 | 亚洲啊v在线 | 亚洲成人一区二区 | 综合色站导航 | 国产精品久久久久久久久久三级 | 在线视频一区二区 | 成人欧美日韩一区二区三区 | 久久久精品一区二区 | 日韩视频―中文字幕 | 国产精品成av人在线视午夜片 | 国产伦精品一区二区三区照片91 | 国产精品激情 | 欧美a在线 | 欧美成人免费在线视频 | 91精品久久久久久久久久入口 | 美女张开腿露出尿口 | 久久99蜜桃综合影院免费观看 | 亚洲成人精品 | 欧美日韩精品一区二区三区四区 | 中文字幕av中文字幕 | 日本精品久久久久久久 | 日韩在线视频一区二区三区 | 国产在线精品一区二区 | 日韩精品在线免费观看视频 | 精品国产一区二区三区性色av | 国产在线一区二区 | 中文字幕一区二区三区在线视频 | 国产一区二区三区在线免费观看 | 国产精品91视频 |