淺談Hibernate二級Cache
在向大家詳細(xì)介紹Hibernate二級Cache之前,首先讓大家了解下Cache,然后全面介紹Hibernate二級Cache。
Hibernate二級Cache
Hibernate二級Cache是SessionFactory范圍內(nèi)的緩存,所有的Session共享同一個二級Cache.在Hibernate二級Cache中保存持久性實例的散裝形式的數(shù)據(jù)。Hibernate二級Cache的內(nèi)部如何實現(xiàn)并不重要,重要的是采用哪種正確的緩存策略,以及采用哪個Cache提供器。持久化不同的數(shù)據(jù)需要不同的 Cache策略,比如一些因素將影響到Cache策略的選擇:數(shù)據(jù)的讀/寫比例,數(shù)據(jù)表是否能被其他的應(yīng)用程序揚(yáng)訪問等。對于一些讀/寫比例高的數(shù)據(jù)可以打開它的緩存,允許這些數(shù)據(jù)進(jìn)入二級緩存容器有利于系統(tǒng)性能的優(yōu)化;而對于能被其它應(yīng)用程序訪問的數(shù)據(jù)對象,最好將此對象的二級Cache選項關(guān)閉。
設(shè)置Hibernate Cache的二級需要分兩步進(jìn)行:首先確認(rèn)使用什么數(shù)據(jù)并發(fā)策略,然后配置緩存過期時間并設(shè)置Hibernate Cache提供器。
有4種內(nèi)置的Hibernate數(shù)據(jù)并發(fā)沖突策略,代表數(shù)據(jù)庫隔離級別,如下:
1:事務(wù)(Transaction)僅在受管理的環(huán)境中可用。它保證可重讀的事務(wù)隔離級別,可以對讀/寫比例高,很少更新的數(shù)據(jù)采用該策略。
2:讀寫(read-write)使用時間戳機(jī)制維護(hù)讀寫提交事務(wù)隔離級別??梢詫ψx/寫比例高,很少更新的數(shù)據(jù)采用該策略。
3:非嚴(yán)格讀寫(notstrict-read-write)不保證Cache和數(shù)據(jù)庫之間的數(shù)據(jù)庫的一致性。使用此策略時,應(yīng)該設(shè)置足夠的緩存過期時間,否則可能從緩存中讀出臟數(shù)據(jù)。當(dāng)一些數(shù)據(jù)極少改變,并且當(dāng)這些數(shù)據(jù)和數(shù)據(jù)庫有一部份不量影響不大時,可以使用此策略。
4:只讀(read-only)當(dāng)確保數(shù)據(jù)永不改變時,可以使用此策略。
我們確定了Hibernate Cache策略后,就要挑選一個高效的Cache提供器,它將作為插件被Hibernate調(diào)用。Hibernate允許使用下述幾種緩存插件:EhCache:可以在JVM中作為一個簡單進(jìn)程范圍內(nèi)的緩存,它可以把緩存的數(shù)據(jù)放入內(nèi)存或磁盤,并支持Hibernate中可選用的查詢緩存。
OpenSymphony OSCache:和EhCache相似,并且提供了豐富的緩存過期策略。
◆SwarmCache:可作為集群范圍的緩存,但不支持查詢緩存。
◆JBossCache:可作為集群范圍的緩沖,但不支持查詢緩存。
以上介紹Hibernate二級Cache
【編輯推薦】