程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> JAVA綜合教程 >> Hibernate 緩存機制,hibernate緩存機制

Hibernate 緩存機制,hibernate緩存機制

編輯:JAVA綜合教程

Hibernate 緩存機制,hibernate緩存機制


一、why(為什麼要用Hibernate緩存?)

Hibernate是一個持久層框架,經常訪問物理數據庫。

為了降低應用程序對物理數據源訪問的頻次,從而提高應用程序的運行性能。

緩存內的數據是對物理數據源中的數據的復制,應用程序在運行時從緩存讀寫數據,在特定的時刻或事件會同步緩存和物理數據源的數據。

 

二、what(Hibernate緩存原理是怎樣的?)Hibernate緩存包括兩大類:Hibernate一級緩存和Hibernate二級緩存。

1.Hibernate一級緩存又稱為“Session的緩存”。

Session內置不能被卸載,Session的緩存是事務范圍的緩存(Session對象的生命周期通常對應一個數據庫事務或者一個應用事務)。

一級緩存中,持久化類的每個實例都具有唯一的OID。


2.Hibernate二級緩存又稱為“SessionFactory的緩存”。

由於SessionFactory對象的生命周期和應用程序的整個過程對應,因此Hibernate二級緩存是進程范圍或者集群范圍的緩存,有可能出現並發問題,因此需要采用適當的並發訪問策略,該策略為被緩存的數據提供了事務隔離級別。

第二級緩存是可選的,是一個可配置的插件,默認下SessionFactory不會啟用這個插件。

Hibernate提供了org.hibernate.cache.CacheProvider接口,它充當緩存插件與Hibernate之間的適配器。

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


3.Session的延遲加載實現要解決兩個問題:正常關閉連接和確保請求中訪問的是同一個session。

Hibernate session就是java.sql.Connection的一層高級封裝,一個session對應了一個Connection。

http請求結束後正確的關閉session(過濾器實現了session的正常關閉);延遲加載必須保證是同一個session(session綁定在ThreadLocal)。


4.Hibernate查找對象如何應用緩存?
當Hibernate根據ID訪問數據對象的時候,首先從Session一級緩存中查;

查不到,如果配置了二級緩存,那麼從二級緩存中查;

如果都查不到,再查詢數據庫,把結果按照ID放入到緩存刪除、更新、增加數據的時候,同時更新緩存。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved