亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Hibernate中的第一級和第二級緩存是什么?

Hibernate中的第一級和第二級緩存是什么?

德瑪西亞99 2019-09-18 13:29:44
任何人都可以用簡單的話來解釋Hibernate中的第一級和第二級緩存是什么?
查看完整描述

3 回答

?
三國紛爭

TA貢獻1804條經驗 獲得超7個贊

Streamline Logic博客上的第一級緩存有一個非常好的解釋。


基本上,第一級緩存在每個會話的基礎上發生,因為第二級緩存可以在多個會話之間共享。


查看完整回答
反對 回復 2019-09-18
?
ITMISS

TA貢獻1871條經驗 獲得超8個贊

這里有一些hibernate緩存的基本解釋......

第一級緩存與“會話”對象相關聯。緩存對象的范圍是會話。會話關閉后,緩存的對象將永遠消失。默認情況下啟用一級緩存,您無法禁用它。當我們第一次查詢實體時,它從數據庫中檢索并存儲在與hibernate會話相關聯的第一級緩存中。如果我們使用相同的會話對象再次查詢同一個對象,它將從緩存加載,并且不會執行sql查詢??梢允褂?code>evict()方法從會話中刪除加載的實體。如果已使用evict()方法刪除該實體,則下一次加載此實體將再次進行數據庫調用。可以使用clear()方法刪除整個會話緩存。它將刪除存儲在緩存中的所有實體。

二級緩存與第一級緩存不同,后者可在會話工廠范圍內全局使用。在會話工廠范圍中創建二級緩存,并且可以在使用該特定會話工廠創建的所有會話中使用。這也意味著一旦會話工廠關閉,與之關聯的所有緩存就會消失,緩存管理器也會關閉。每當hibernate會話嘗試加載一個實體時,它首先在第一級緩存中尋找實體的緩存副本(與特定的hibernate會話相關聯)。如果實體的緩存副本存在于第一級緩存中,則它將作為load方法的結果返回。如果第一級緩存中沒有緩存實體,則查找第二級緩存以獲取緩存實體。如果二級緩存具有緩存實體,則它將作為load方法的結果返回。但,在返回實體之前,它也存儲在第一級緩存中,以便下一次調用實體的加載方法將從第一級緩存本身返回實體,并且不需要再次進入二級緩存。如果在第一級緩存和第二級緩存中也找不到實體,則執行數據庫查詢并將實體存儲在兩個緩存級別中,然后作為響應返回load() 方法。


查看完整回答
反對 回復 2019-09-18
  • 3 回答
  • 0 關注
  • 546 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號