天天看點

【hibernate架構】緩存機制之查詢緩存

查詢緩存是面對重複緩存的,是依賴于二級緩存的,是以一定要打開二級緩存。

1.load預設使用二級緩存,iterate預設使用二級緩存

2.list預設往二級緩存中加資料,但是查詢的時候不使用

3.如果要query用二級緩存,需打開查詢緩存

i.<property name="cache.use_query_cache">ture</property>

ii.調用query的setcacheable(true)方法指明使用二級緩存。

證明查詢緩存已經起作用了:

發現隻輸出了一條查詢語句,說明加第二次載了緩存:

hibernate: 

    select

        category0_.id as id0_0_,

        category0_.name as name0_0_ 

    from

        category category0_ 

    where

        category0_.id=?

c0

ps:說一下主流的緩存算法

緩存算法就是指定記憶體裡面哪個對象在适當的時候該拿走

a.lru、lfu、fifo

1.least recently used

翻譯是"最近很少使用",也就是最近很少使用的會被清除,每個在緩存中的對象都有存在的時間标志,哪一個時間長,就會被拿走。

2.least frequently used(命中率高低)

最近不常被使用,最少被使用。緩存中有兩個對象,一個被命中1回,一個被命中100回,那麼新來一個對象的時候,就會清除那個命中1回的那個。

3.first in first out

就是一個隊列,後面進一個,前面走一個。

在ehcache的配置檔案中可以配置這個屬性來設定緩存算法:

b.memorystoreevictionpolicy="lru"(ehcache)

轉載請注明出處:http://blog.csdn.net/acmman/article/details/44132287