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