Hibernate---快取機制四(一,二級快取的比較)
1.一級快取和二級快取的比較:
Hibernate中提供了兩級Cache,第一級別的快取是Session級別的快取,它是屬於事務範圍的快取。這一級別的快取由hibernate管理的,一般情況下無需進行干預;第二級別的快取是SessionFactory級別的快取,它是屬於程式範圍或群集範圍的快取。這一級別的快取可以進行配置和更改,並且可以動態載入和解除安裝。
第一級快取
|
第二級快取
|
|
存放資料的形式
|
相互關聯的持久化物件
|
物件的散裝資料
|
快取的範圍
|
事務範圍,每個事務都有單獨的第一級快取
|
程式範圍或叢集範圍,快取被同一個程式或叢集範圍內的所有事務共享
|
併發訪問策略
|
由於每個事務都擁有單獨的第一級快取,不會出現併發問題,無需提供併發訪問策略
|
由於多個事務會同時訪問第二級快取中相同資料,因此必須提供適當的併發訪問策略,來保證特定的事務隔離級別
|
資料過期策略
|
沒有提供資料過期策略。處於一級快取中的物件永遠不會過期,除非應用程式顯式清空快取或者清除特定的物件
|
必須提供資料過期策略,如基於記憶體的快取中的物件的最大數目,允許物件處於快取中的最長時間,以及允許物件處於快取中的最長空閒時間
|
物理儲存介質
|
記憶體
|
記憶體和硬碟。物件的散裝資料首先存放在基於內在的快取中,當記憶體中物件的數目達到資料過期策略中指定上限時,就會把其餘的物件寫入基於硬碟的快取中。
|
快取的軟體實現
|
在Hibernate的Session的實現中包含了快取的實現
|
由第三方提供,Hibernate僅提供了快取介面卡(CacheProvider)。用於把特定的快取外掛整合到Hibernate中。
|
啟用快取的方式
|
只要應用程式通過Session介面來執行儲存、更新、刪除、載入和查詢資料庫資料的操作,Hibernate就會啟用第一級快取,把資料庫中的資料以物件的形式拷貝到快取中,對於批量更新和批量刪除操作,如果不希望啟用第一級快取,可以繞過Hibernate API,直接通過JDBC API來執行指操作。
|
使用者可以在單個類或類的單個集合的粒度上配置第二級快取。如果類的例項被經常讀但很少被修改,就可以考慮使用第二級快取。只有為某個類或集合配置了第二級快取,Hibernate在執行時才會把它的例項加入到第二級快取中。
|
使用者管理快取的方式
|
第一級快取的物理介質為記憶體,由於記憶體容量有限,必須通過恰當的檢索策略和檢索方式來限制載入物件的數目。Session的evit()方法可以顯式清空快取中特定物件,但這種方法不值得推薦。
|
第二級快取的物理介質可以是記憶體和硬碟,因此第二級快取可以存放大量的資料,資料過期策略的maxElementsInMemory屬性值可以控制記憶體中的物件數目。管理第二級快取主要包括兩個方面:選擇需要使用第二級快取的持久類,設定合適的併發訪問策略:選擇快取介面卡,設定合適的資料過期策略。
|
相關文章
- MyBatis快取機制(一級快取,二級快取)MyBatis快取
- Java快取機制:Ehcache與Guava Cache的比較Java快取Guava
- mybatis快取-二級快取MyBatis快取
- Mybatis的二級快取、使用Redis做二級快取MyBatis快取Redis
- Web 快取機制 與 快取策略Web快取
- mybatis快取之一級快取(二)MyBatis快取
- Hibernate一級快取(session)與二級快取(sessionFactory)的知識點。快取Session
- 對於前端快取的理解(快取機制和快取型別)前端快取型別
- 瀏覽器的快取機制—強快取與協商快取瀏覽器快取
- mybatis原始碼學習:一級快取和二級快取分析MyBatis原始碼快取
- Mybatis的二級快取MyBatis快取
- (四)Redis 快取應用、淘汰機制Redis快取
- MyBatis 的快取機制MyBatis快取
- mybatis的快取機制MyBatis快取
- MybatisPlus二級快取MyBatis快取
- HTTP快取機制HTTP快取
- web快取機制Web快取
- 前端快取機制前端快取
- LRU快取機制快取
- Mybatis快取機制MyBatis快取
- OkHttp 原始碼分析(二)—— 快取機制HTTP原始碼快取
- RecyclerView 原始碼分析(二) —— 快取機制View原始碼快取
- mybatis基礎系列(四)——關聯查詢、延遲載入、一級快取與二級快取MyBatis快取
- [玩轉MySQL之四]MySQL快取機制MySql快取
- Mybatis 一級快取和二級快取原理區別 (圖文詳解)MyBatis快取
- 聊一聊HTTP快取機制HTTP快取
- Redis 的高效能快取機制的三類問題:快取擊穿、快取雪崩 和 快取穿透Redis快取穿透
- node中的快取機制快取
- Mybatis的快取——一級快取和原始碼分析MyBatis快取原始碼
- http系列--徹底理解瀏覽器的快取機制(http快取機制)HTTP瀏覽器快取
- Mybatis二級快取使用MyBatis快取
- 億級流量客戶端快取之Http快取與本地快取對比客戶端快取HTTP
- 快取問題(四) 快取穿透、快取雪崩、快取併發 解決案例快取穿透
- Laravel 實現二級快取 提高快取的命中率和細粒化快取 keyLaravel快取
- GuavaCache、EVCache、Tair、Aerospike 快取框架比較GuavaAIROS快取框架
- 從WebView快取聊到Http 的快取機制 | 掘金技術徵文WebView快取HTTP
- Redis快取篇(四)快取異常Redis快取
- mybatis快取之一級快取(一)MyBatis快取
- 瀏覽器的快取機制瀏覽器快取