程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> Hibernate中load辦法與get辦法的差別

Hibernate中load辦法與get辦法的差別

編輯:關於JAVA

Hibernate中load辦法與get辦法的差別。本站提示廣大學習愛好者:(Hibernate中load辦法與get辦法的差別)文章只能為提供參考,不一定能成為您想要的結果。以下是Hibernate中load辦法與get辦法的差別正文


重要差別在因而否延遲加載。

load辦法
不會立刻拜訪數據庫,當試圖加載的記載不存在時,load辦法前往一個未初始化的署理對象。

get辦法

老是立刻拜訪數據庫。當試圖加載的記載不存在時,直接前往null

在hibernate中發明有2個辦法很相同。查閱後發明

Hibernate中有兩個極其類似的辦法get()與load(),他們都可以經由過程指定的實體類與ID從數據庫中讀取數據,並前往對應的實例,但Hibernate不會弄兩個完整一樣的辦法的,它們間的分歧在於:

get是直接查詢數據庫,假如查不到就前往null ,Load會起首從內存中裝載,假如之前沒有裝載或查詢出來,才開 始查詢數據庫.

hibernate中get辦法和load辦法的基本差別在於:假如你應用load辦法,hibernate以為該id對應的對象(數據庫記載)在數據庫中是必定存在的,所以它可以寧神的應用,它可以寧神的應用署理來延遲加載該對象。在用到對象中的其他屬性數據時才查詢數據庫,然則萬一數據庫中不存在該記載,那沒方法,只能拋異常,所說的load辦法拋異常是指在應用該對象的數據時,數據庫中不存在該數據時拋異常,而不是在創立這個對象時。因為session中的緩存關於hibernate來講是個相當便宜的資本,所以在load時會先查一下session緩存看看該id對應的對象能否存在,不存在則創立署理。所以假如你曉得該id在數據庫中必定有對應記載存在便可以應用load辦法來完成延遲加載。 關於get辦法,hibernate會確認一下該id對應的數據能否存在,起首在session緩存中查找,然後在二級緩存中查找,還沒有就查數據庫,數據庫中沒有就前往null。

2.get辦法起首查詢session緩存,沒有的話查詢二級緩存,最初查詢數據庫;反而load辦法創立時起首查詢session緩存,沒有就創立署理,現實應用數據時才查詢二級緩存和數據庫。

總之關於get和load的基本差別,一句話,hibernate關於load辦法以為該數據在數據庫中必定存在,可以寧神的應用署理來延遲加載,假如在應用進程中發明了成績,只能拋異常;而關於get辦法,hibernate必定要獲得到真實的數據,不然前往null。

 1.假如找不到相符前提的記載,get()辦法將前往null.而load()將會報出ObjectNotFoundEcception.
2.load()辦法可以前往實體的署理類實例,而get()永久只前往實體類.
3.load()辦法可以充足應用二級緩存和外部緩存的現稀有據,而get()辦法只在外部緩存中停止查找,如沒有發明對應數據將跳過二級緩存,直接挪用SQL完成查找.

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved