1. 程式人生 > >Hibernate二級快取併發說明

Hibernate二級快取併發說明

二級快取的策略

       當多個併發的事務同時訪問持久化層的快取中的相同資料時,會引起併發問題,必須採用必要的事務隔離措施。

       在程序範圍或叢集範圍的快取,即第二級快取,會出現併發問題。因此可以設定以下4種類型的併發訪問策略,每一種策略對應一種事務隔離級別。

●   只讀快取(read-only)

       如果應用程式需要讀取一個持久化類的例項,但是並不打算修改它們,可以使用read-only快取。這是最簡單,也是實用性最好的策略。

對於從來不會修改的資料,如參考資料,可以使用這種併發訪問策略。

●   讀/寫快取(read-write)

       如果應用程式需要更新資料,可能read-write快取比較合適。如果需要序列化事務隔離級別,那麼就不能使用這種快取策略。

對於經常被讀但很少修改的資料,可以採用這種隔離型別,因為它可以防止髒讀這類的併發問題。

●   不嚴格的讀/寫快取(nonstrict-read-write)

       如果程式偶爾需要更新資料(也就是說,出現兩個事務同時更新同一個條目的現象很不常見),也不需要十分嚴格的事務隔離,可能適用nonstrict-read-write快取。

對於極少被修改,並且允許偶爾髒讀的資料,可以採用這種併發訪問策略。

●   事務快取(transactional)

       transactional快取策略提供了對全事務的快取,僅僅在受管理環境中使用。它提供了Repeatable Read事務隔離級別。對於經常被讀但很少修改的資料,可以採用這種隔離型別,因為它可以防止髒讀和不可重複讀這類的併發問題。

       在上面所介紹的隔離級別中,事務型併發訪問策略的隔離級別最高,然後依次是讀/寫型和不嚴格讀寫型,只讀型的隔離級別最低。事務的隔離級別越高,併發效能越低。

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

相關推薦

Hibernate 二級快取和查詢快取

一級快取:     1,在session上面有一個一級快取;一級快取的生命週期和session相同,一級快取最大生命週期就是一個執行緒;在web環境下面,session的最大生命週期就是一次請求;     2,一級快取可以用來幹嘛? &nb

Hibernate 二級快取的作用

使用快取,是需要對應用系統進行效能優化而常採用的一種重要手段。合理地運用快取,可以極大的提高應用系統的執行效率。 Hibernate中應用快取:因為應用程式訪問資料庫,讀寫資料的代價非常高,而利用持久層的快取可以減少應用程式與資料庫之間的互動,即把訪問過的資料儲存到快取中,應用程式再次訪問已經訪

Hibernate二級快取問題

相關概念和定義1、快取的意義把一些不常修改,但是又經常用的資料存放到記憶體中,這樣能減少與資料庫的互動,提升程式的效能 2、Hibernate中提供了兩級快取:第一級別的快取是Session級別的快取(比如說在呼叫get方法的時候,如果已經查詢過一次了,第二次就不會查了,而是直接返回session快取中已經

hibernate 二級快取和事務級別詳講

一、概述 這章總的分兩大塊來講解   第一大塊,hibernate的事務管理。對於hibernate的事務管理來說,如果之前學過資料庫的事務管理,那麼在這裡就順風順水了。如果沒學過,第一次遇到,那也沒關係,我會詳細解釋其中的內容。   第二大塊,hibernate的二級快取機制。這個看起

spring boot整合ehcache 2.x 用於hibernate二級快取

spring boot整合ehcache 2x 用於hibernate二級快取 專案依賴 Ehcache簡介 hibernate二級快取配置 ehcache配置檔案 ehcache事件監聽 註解方式使用二級快取 完整程式碼 本文將介紹如何在spring boot中整合ehcache作為hiberna

關於hibernate 二級快取 報錯問題

Maven   hibernate-ehcache 和hibernate-core版本需要一致 <dependency> <groupId>org.hibernate</groupId> <artifactId>h

Hibernate二級快取

Hibernate中沒有自己去實現二級快取,而是利用第三方的。簡單敘述一下配置過程,也作為自己以後用到的時候配置的一個參考。 1、我們需要加入額外的二級快取包,例如EHcache,將其包匯入。需要:ehcache-core-2.4.3.jar , hibernate-e

Hibernate二級快取實現的方式(在類中,在方法上實現的思路)

資料庫快取 - 幕布 資料庫快取兩種處理方式一種處理model,只查詢快取,不更新快取參考列子 使用者表的敏感詞列表思路專案pom檔案匯入hibernate-encache快取檔案建立

SSH開啟Hibernate二級快取

1、新增ehcache依賴: <!-- Hibernate二級快取依賴 --> <dependency> <groupId>org.hibernate</groupId> <artifac

Hibernate 二級快取-ehcache

1 新增依賴包 <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>

hibernate 二級快取

一、為什麼需要快取? 拉高程式效能 二、什麼樣的資料需要快取 很少被修改或根本不改的資料 業務場景比如:耗時較高的統計分析sql、電話賬單查詢sql等 三、 ehcache的特點 1 夠快 Ehcache的發行有一段時長了,經過幾年的努力和不計其數的效能測試,E

hibernate 二級快取和查詢快取原理和關係

一、hibernate的二級快取 如果開啟了二級快取,hibernate在執行任何一次查詢的之後,都會把得到的結果集放到快取中,快取結構可以看作是一個hash table,key是資料庫記錄的id,value是id對應的pojo物件。當用戶根據id查詢物件的時候(load、iterator方法),會首先在

hibernate二級快取 Ehcache配置詳解

一、hibernate快取簡介 一級快取(session):內部快取 事務範圍:快取只能被當前事務訪問。快取的生命週期依賴於事務的生命週期,當事務結束時,快取也就結束生命週期。 二級快取(sessionFactory): 快取被應用範圍內的所有事務共享。 這些事務

hibernate二級快取攻略(第二天)

查詢快取 首先需要配置 hibernate.cache.use_query_cache = true  如果用ehcache,配置ehcache.xml,注意hibernate3.0以後不是net.sf的包名了 < cache name = " net.sf.

Hibernate二級快取以及ehcache的搭建配置

前言         這次主要複習Hibernate的二級快取的相關知識,配置以及使用。二級快取主要採用第三方的ehcache,也將介紹ehcache快取的相關配置屬性以及在專案中的搭建,具體的專案檢視下一篇的 Maven搭建SpringMVC+Hibernate專案詳解

hibernate二級快取機制

二級快取不像一級快取那樣預設開啟的,它需要配置。二級快取中的資料可適用範圍是當前應用的所有會話 在這些情況下面應該使用二級快取: 1.很少被修改的資料。如果經常修改的話要修改資料庫而且要修改快取裡面

hibernate二級快取測試

SessionFactory類: import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.cfg.Configuration; imp

Hibernate二級快取併發說明

二級快取的策略        當多個併發的事務同時訪問持久化層的快取中的相同資料時,會引起併發問題,必須採用必要的事務隔離措施。        在程序範圍或叢集範圍的快取,即第二級快取,會出現併發問題。因此可以設定以下4種類型的併發訪問策略,每一種策略對應一種事務隔離級別。

Java程式設計師從笨鳥到菜鳥之(七十七)細談Hibernate(十九)Hibernate二級快取詳解

歡迎關注微信賬號:java那些事:csh624366188.每天一篇java相關的文章 java交流工作群1: 77800592(已滿) java交流學生群2:234897635(已滿) java交流工作群3:94507287 java交流工作群4: 272265434 我的郵箱:

搭建Hibernate二級快取EHcache的環境

常見的快取元件 在預設情況下,hibernate會使用EHCache作為二級快取元件。但是,可以通過設定hibernate.cache.provider_class屬性,指定其他的快取策略,該快取策略必須實現org.hibernate.cache.Cach