Hibernate二級快取

2021-08-11 05:58:29 字數 2307 閱讀 4289

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級別 的快取。你甚至可以為之插入乙個集群的快取。注意,快取永遠不知道其他應用程式對持久化倉庫 資料庫 可能進行的修改 即使可以將快取資料設定為...