1. 程式人生 > >hibernate如何管理快取

hibernate如何管理快取

    1. 一級快取和二級快取的比較:第一級快取 第二級快取 存放資料的形式 相互關聯的持久化物件 物件的散裝資料 快取的範圍 事務範圍,每個事務都有單獨的第一級快取程序範圍或叢集範圍,快取被同一個程序或叢集範圍內的所有事務共享 併發訪問策略由於每個事務都擁有單獨的第一級快取,不會出現併發問題,無需提供併發訪問策略由於多個事務會同時訪問第二級快取中相同資料,因此必須提供適當的併發訪問策略,來保證特定的事務隔離級別 資料過期策略沒有提供資料過期策略。處於一級快取中的物件永遠不會過期,除非應用程式顯式清空快取或者清除特定的物件必須提供資料過期策略,如基於記憶體的快取中的物件的最大數目,允許物件處於快取中的最長時間,以及允許物件處於快取中的最長空閒時間 物理儲存介質記憶體記憶體和硬碟。物件的散裝資料首先存放在基於內在的快取中,當記憶體中物件的數目達到資料過期策略中指定上限時,就會把其餘的物件寫入基於硬碟的快取中。快取的軟體實現 在
HibernateSession的實現中包含了快取的實現由第三方提供,Hibernate僅提供了快取介面卡(CacheProvider)。用於把特定的快取外掛整合到Hibernate中。啟用快取的方式只要應用程式通過Session介面來執行儲存、更新、刪除、載入和查詢資料庫資料的操作,Hibernate就會啟用第一級快取,把資料庫中的資料以物件的形式拷貝到快取中,對於批量更新和批量刪除操作,如果不希望啟用第一級快取,可以繞過Hibernate API,直接通過JDBCAPI來執行指操作。使用者可以在單個類或類的單個集合的粒度上配置第二級快取。如果類的例項被經常讀但很少被修改,就可以考慮使用第二級快取。只有為某個類或集合配置了第二級快取,
Hibernate在執行時才會把它的例項加入到第二級快取中。 使用者管理快取的方式第一級快取的物理介質為記憶體,由於記憶體容量有限,必須通過恰當的檢索策略和檢索方式來限制載入物件的數目。Sessionevit()方法可以顯式清空快取中特定物件,但這種方法不值得推薦。 第二級快取的物理介質可以是記憶體和硬碟,因此第二級快取可以存放大量的資料,資料過期策略的maxElementsInMemory屬性值可以控制記憶體中的物件數目。管理第二級快取主要包括兩個方面:選擇需要使用第二級快取的持久類,設定合適的併發訪問策略:選擇快取介面卡,設定合適的資料過期策略。