Hibernate中g(shù)et()和load()方法有何區(qū)別?

1.get是立即加載,load是延時加載。

2.get會先查一級緩存,再查二級緩存,然后查數(shù)據(jù)庫,load會先查一級緩存,若沒找到,就創(chuàng)建代理對象,等需要的時候去查二級緩存和數(shù)據(jù)庫(load延時加載特性)。

3.get如果沒有找到會返回null,load如果沒有找到會拋出異常

4.當(dāng)使用session.load()方法來加載一個對象時,此時并不會發(fā)出SQL語句,當(dāng)前得到的對象時一個代理對象,該對象只保存了實(shí)體對象的id,只有當(dāng)要使用它的時候,才會發(fā)出sql語句,從數(shù)據(jù)庫中去查詢需要的數(shù)據(jù),相當(dāng)于load的延遲加載方式。get就直接的多,當(dāng)我們使用session.get()方法得到一個對象時,不管使用與否,此時都會發(fā)出sql語句去數(shù)據(jù)庫中查找

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容