hibernate提供的快取
有一級快取、二級快取。 目的是為了減少對資料庫的訪問次數,提公升程式執行效率!
一級快取:
基於session
的快取,快取內容只在當前
session
有效,session
關閉,快取內容失效!
特點:
作用範圍較小! 快取的事件短。
快取效果不明顯。
二級快取:
hibernate提供了基於應用程式級別的快取, 可以跨多個
session
,即不同的
session
都可以訪問快取資料。 這個換存也叫二級快取。
hibernate提供的二級快取有預設的實現,且是一種可插配的快取框架!如果使用者想用二級快取,只需要在
hibernate.cfg.xml
中配置即可; 不想用,直接移除,不影響**。
如果使用者覺得hibernate
提供的框架框架不好用,自己可以換其他的快取框架或自己實現快取框架都可以。
檢視hibernate.properties
配置檔案,二級快取如何配置?
### second-level cache ###
#hibernate.cache.use_second_level_cache false【二級快取預設不開啟,需要手動開啟】
#hibernate.cache.use_query_cache true 【開啟查詢快取】
## choose a cache implementation 【二級快取框架的實現】
#hibernate.cache.provider_class org.hibernate.cache.ehcacheprovider
#hibernate.cache.provider_class org.hibernate.cache.emptycacheprovider
hibernate.cache.provider_class org.hibernate.cache.hashtablecacheprovider 預設實現
#hibernate.cache.provider_class org.hibernate.cache.treecacheprovider
#hibernate.cache.provider_class org.hibernate.cache.oscacheprovider
#hibernate.cache.provider_class org.hibernate.cache.swarmcacheprovider
二級快取,使用步驟
1) 開啟二級快取
2)指定快取框架
3)指定那些類加入二級快取
4)測試
測試二級快取!
list() 預設情況只會放入快取,不會從一級快取中取!
使用查詢快取,可以讓list()
查詢從二級快取中取!
我們再試試配置了二級快取通過hql查詢會怎樣?
我們需要在hql查詢語句後面設定setcacheable(true);
放入二級快取的物件,唯讀;
非嚴格的讀寫
讀寫; 放入二級快取的物件可以讀、寫;
(基於事務的策略
)
hibernate二級快取
cacheconcurrencystrategy.none cacheconcurrencystrategy.read only 唯讀模式,在此模式下,如果對資料進行更新操作,會有異常 cacheconcurrencystrategy.read write 讀寫模式在更新快取的時候會把快取裡面的資料...
hibernate 二級快取
session快取 一級快取 sql查詢結果快取,由hibernate管理 sessionfactory內建快取,內建快取是hibernate自帶的,用於存放預定義的sql以及hbm.xml描述的元資料,不可解除安裝 sessionfactory外接快取 二級快取 由外部外掛程式提供,外接快取的資料...
Hibernate二級快取
hibernate的session在事務級別進行持久化資料的快取操作。當然,也有可能分別為每個類 或集合 配置集群 或jvm級別 sessionfactory級別 的快取。你甚至可以為之插入乙個集群的快取。注意,快取永遠不知道其他應用程式對持久化倉庫 資料庫 可能進行的修改 即使可以將快取資料設定為...