Hibernate的緩存介紹

1、Hibernate緩存概述

緩存是介於物理數據源與應用程序之間,是數據庫數據在內存中的存放臨時copy的容器,其作用是爲了減少應用程序對物理數據源訪問的次數,從而提高了應用的運行性能。Hibernate在進行讀取數據的時候,根據緩存機制在相應的緩存中查詢,如果在緩存中找到了需要的數據(我們把這稱做“緩存命中"),則就直接把命中的數據作爲結果加以利用,避免了建立數據庫查詢的性能損耗。

 

2:Hibernate緩存分類

一級緩存(session):內部緩存

事務範圍:緩存只能被當前事務訪問。緩存的生命週期依賴於事務的生命週期,當事務結束時,緩存也就結束生命週期。

二級緩存(sessionFactory):緩存被應用範圍內的所有事務共享。 這些事務有可能是併發訪問緩存,因此必須對緩存進行更新。緩存的生命週期依賴於應用的生命週期,應用結束時, 緩存也就結束了生命週期,二級緩存存在於應用範圍。集羣範圍:在集羣環境中,緩存被一個機器或者多個機器的進程共享。緩存中的數據被複制到集羣環境中的每個進程節點,進程間通過遠程通信來保證緩存中的數據的一致性, 緩存中的數據通常採用對象的鬆散數據形式,二級緩存也存在與應用範圍。

 

使用二級緩存的原則:

◆數據不會被第三方修改

◆同一數據系統經常引用

◆數據大小在可接受範圍之內

◆關鍵數據或不會被併發更新的數據

 

Hibernate提供了兩級緩存,第一級是Session的緩存。由於Session對象的生命週期通常對應一個數據庫事務或者一個應用事務,因此它的緩存是事務範圍的緩存。第一級緩存是必需的,不允許而且事實上也無法比卸除。在第一級緩存中,持久化類的每個實例都具有唯一的OID。

  第二級緩存是一個可插拔的的緩存插件,它是由SessionFactory負責管理。由於SessionFactory對象的生命週期和應用程序的整個過程對應,因此第二級緩存是進程範圍或者集羣範圍的緩存。這個緩存中存放的對象的鬆散數據。第二級對象有可能出現併發問題,因此需要採用適當的併發訪問策略,該策略爲被緩存的數據提供了事務隔離級別。緩存適配器用於把具體的緩存實現軟件與Hibernate集成。第二級緩存是可選的,可以在每個類或每個集合的粒度上配置第二級緩存。

發佈了38 篇原創文章 · 獲贊 0 · 訪問量 1956
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章