解答Hibernate二級緩存疑問
學習Hibernate時,經常會遇到Hibernate二級緩存問題,這里將介紹Hibernate二級緩存問題的解決方法。
一.Hibernate二級緩存策略的一般過程如下:
1.條件查詢的時候,總是發(fā)出一條select * from table_name where …. (選擇所有字段)這樣的SQL語句查詢數(shù)據(jù)庫,一次獲得所有的數(shù)據(jù)對象。
2.把獲得的所有數(shù)據(jù)對象根據(jù)ID放入到第二級緩存中。
3.當Hibernate根據(jù)ID訪問數(shù)據(jù)對象的時候,首先從Session一級緩存中查;查不到,如果配置了二級緩存,那么從二級緩存中查;查不到,再查詢數(shù)據(jù)庫,把結果按照ID放入到緩存。
4.刪除、更新、增加數(shù)據(jù)的時候,同時更新緩存。
Hibernate二級緩存策略,是針對于ID查詢的緩存策略,對于條件查詢則毫無作用。為此,Hibernate提供了針對條件查詢的Query Cache。
二.什么樣的數(shù)據(jù)適合存放到Hibernate二級緩存中?
1 很少被修改的數(shù)據(jù)
2 不是很重要的數(shù)據(jù),允許出現(xiàn)偶爾并發(fā)的數(shù)據(jù)
3 不會被并發(fā)訪問的數(shù)據(jù)
4 參考數(shù)據(jù),指的是供應用參考的常量數(shù)據(jù),它的實例數(shù)目有限,它的實例會被許多其他類的實例引用,實例極少或者從來不會被修改。
三.不適合存放到第二級緩存的數(shù)據(jù)?
1 經常被修改的數(shù)據(jù)
2 財務數(shù)據(jù),絕對不允許出現(xiàn)并發(fā)
3 與其他應用共享的數(shù)據(jù)。
【編輯推薦】