Hibernate二級快取併發說明

2021-06-29 09:54:30 字數 1083 閱讀 2331

二級快取的策略

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

在程序範圍或集群範圍的快取,即第二級快取,會出現併發問題。因此可以設定以下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二級快取

cacheconcurrencystrategy.none cacheconcurrencystrategy.read only 唯讀模式,在此模式下,如果對資料進行更新操作,會有異常 cacheconcurrencystrategy.read write 讀寫模式在更新快取的時候會把快取裡面的資料...

hibernate 二級快取

session快取 一級快取 sql查詢結果快取,由hibernate管理 sessionfactory內建快取,內建快取是hibernate自帶的,用於存放預定義的sql以及hbm.xml描述的元資料,不可解除安裝 sessionfactory外接快取 二級快取 由外部外掛程式提供,外接快取的資料...

Hibernate二級快取

hibernate的session在事務級別進行持久化資料的快取操作。當然,也有可能分別為每個類 或集合 配置集群 或jvm級別 sessionfactory級別 的快取。你甚至可以為之插入乙個集群的快取。注意,快取永遠不知道其他應用程式對持久化倉庫 資料庫 可能進行的修改 即使可以將快取資料設定為...