Hibernate緩存詳解

一,緩存的概念

緩存是位於應用程序和永久性數據存儲源之間用於臨時存放複製數據的內存區域,緩存可以降低應用程序之間讀寫永久性數據存儲源的次數,從而提高應用程序的運行性能;


,緩存的作用

hibernate在查詢數據時,首先會到緩存中查找,如果找到就直接使用,找不到時才從永久性數據存儲源中檢索,因此,把頻繁使用的數據加載到緩存中,可以減少應用程序對永久性數據存儲源的訪問,使應用程序的運行性能得以提升;


Hibernate緩存的範圍

緩存範圍決定了緩存的生命週期,緩存範圍分爲3類:

1>事務範圍

緩存只能被當前事務訪問,緩存的生命週期依賴於事務的生命週期,事務結束時,緩存的生命週期也結束了;

2>進程範圍

緩存被進程內的所有事務共享,這些事務會併發訪問緩存,需要對緩存採用必要的事務隔離機制,緩存的生命週期取決與進程的生命週期,進程結束,緩存的生命週期也結束了;

3>集羣範圍

緩存被一個或多個計算機的進程共享,緩存中的數據被複制到集羣中的每個進行節點,進程間通過遠程通信來保證緩存中數據的一致性;

在查詢時,如果在事務範圍內的緩存中沒有找到,可以到進程範圍或集羣範圍的緩存中查找,如果還沒找到,則到數據庫中查詢;


Hibernate緩存分類:
  Hibernate緩存包括兩大類:Hibernate一級緩存Hibernate二級緩存
Hibernate一級緩存又稱爲“Session的緩存”,它是內置的,不能被卸載(不能被卸載的意思就是這種緩存不具有可選性,必須有的功能,不可以取消session緩存)。由於Session對象的生命週期通常對應一個數據庫事務或者一個應用事務,因此它的緩存是事務範圍的緩存。第一級緩存是必需的,不允許而且事實上也無法卸除。在第一級緩存中,持久化類的每個實例都具有唯一的OID。
Hibernate二級緩存又稱爲“SessionFactory的緩存”,由於SessionFactory對象的生命週期和應用程序的整個過程對應,因此Hibernate二級緩存是進程範圍或者集羣範圍的緩存,有可能出現併發問題,因此需要採用適當的併發訪問策略,該策略爲被緩存的數據提供了事務隔離級別。第二級緩存是可選的,是一個可配置的插件,在默認情況下,SessionFactory不會啓用這個插件。

什麼樣的數據適合存放到第二級緩存中?
1 很少被修改的數據   
2 不是很重要的數據,允許出現偶爾併發的數據   
3 不會被併發訪問的數據   
4 常量數據   
不適合存放到第二級緩存的數據?
1經常被修改的數據   
2 .絕對不允許出現併發訪問的數據,如財務數據,絕對不允許出現併發   
3 與其他應用共享的數據。

Hibernate查找對象如何應用緩存?
Hibernate根據ID訪問數據對象的時候,首先從Session一級緩存中查;查不到,如果配置了二級緩存,那麼從二級緩存中查;如果都查不到,再查詢數據庫,把結果按照ID放入到緩存
刪除、更新、增加數據的時候,同時更新緩存

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章