Spring4集成Ehcache配置

對未來運營壓力的擔憂,想用ehcache來做named query caching,昨天就抽出時間來配置一下Ehcache,考慮到以後spring中可能會也用到Ehcache(現在已經集成了redis,但發現一些小項目,可能用不上redis)。就做了公用一個Ehcache的配置。

hiberante 配置:

<prop key="hibernate.cache.use_second_level_cache">true</prop>
<prop key="cache.use_query_cache">true</prop>
<prop key="hibernate.cache.region.factory_class">org.hibernate.cache.ehcache.EhCacheRegionFactory</prop>


借鑑:http://fishergay.iteye.com/blog/1846926的配置

<!-- cacheManager, 指定ehcache.xml的位置 -->
    <bean id="ehcacheManager" class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean">
        <property name="configLocation">
            <value>WEB-INF/ehcache.xml</value>
        </property>
        <!-- 由於hibernate也使用了Ehcache, 保證雙方都使用同一個緩存管理器 -->
        <property name="shared" value="true"/>
    </bean>


配置完ehcache.xml,急切的就測試了一下。修改了@cache和setCacheable(true),但是卻發現namedquery怎麼樣也cache不了。反覆檢查ehcache配置,單對象cache是成功的。感覺到非常奇怪,昨晚還是搗鼓了一下,沒有發現明顯的錯誤,就是每次都從數據庫fetch。換了createQuery的方法也一樣,連setCacheRegion都指定了也無效。

最後再去看hibernate的配置,感覺應該問題是在property的設置上,發現手寫的配置少了“hibernate.”,key="cache.use_query_cache"。加上後,就可以了。-_-b小錯誤害死人。特在這裏mark一下。

正確的是:

<prop key="hibernate.cache.use_query_cache">true</prop>



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章