![](/img/trans.png)
[英]Hibernate 4 second level cache hibernate is not working with association (EhCache)
[英]Ehcache second level cache not working with JPA and Hibernate?
編輯:我應該聲明我已經研究了幾天了 - 有很多關於“如何使用Hibernate配置ehcache”的信息,但他們大多沒有提到使用JPA和注釋 - 他們要么指的是純粹的通過XML進行休眠或配置。 (只是想說清楚我已經在互聯網上解決了這個問題。)我正在使用JPA和注釋,所以這些配置指南中的大多數引用了我的app中沒有的文件(比如hbm.xml)文件)。
我有一個使用Hibernate 3.6.10.FINAL,Spring Data 1.3.2.RELEASE和Spring版本3.2.1.RELEASE的應用程序。 我試圖讓第二級緩存在hibernate中工作。 根據文檔,我可以通過包含以下依賴項和配置來實現:
(pom.xml的)
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-ehcache</artifactId>
<version>${hibernate.version}</version>
</dependency>
(persistence.xml中)
<property name="hibernate.cache.provider_class" value="org.hibernate.cache.EhCacheProvider" />
<property name="hibernate.cache.use_second_level_cache" value="true" />
<property name="hibernate.cache.use_query_cache" value="true" />
<property name="hibernate.generate_statistics" value="true" />
我使用javax.persistence.Cacheable注釋注釋了我的一個實體類,並嘗試在JUnit測試中查看統計信息:
public void cacheTest() {
RandomDataGenerator randomData = new RandomDataGenerator();
for (int i = 0; i < 10; i++) {
AppMaster master = masterService.findOne(randomData.nextLong(1, 10));
logger.debug(String.format("Read one record back = %1$d, %2$s", master.getApplicationId(), master.getApContact()),AppMasterServiceTest.class);
// Get statistics from hibernate session
Session session = (Session)masterService.getEntityManager().getDelegate();
Statistics statistics = session.getSessionFactory().getStatistics();
logger.debug(String.format("Second level stats = %1$d, %2$d, %3$d",
statistics.getSecondLevelCachePutCount(),
statistics.getSecondLevelCacheHitCount(),
statistics.getSecondLevelCacheMissCount()), AppMasterServiceTest.class);
}
但統計數據似乎始終為零。
2013-11-11 11:20:33,908 DEBUG [main] test.service.AppMasterServiceTest - Second level stats = 0, 0, 0
任何人都可以幫我診斷嗎?
javax.persistence.Cachable要求您在persistence.xml中設置ENABLE_SELECTIVE。 您應該包含如下所示的行:
<shared-cache-mode>ENABLE_SELECTIVE</shared-cache-mode>
查看http://docs.oracle.com/javaee/6/api/javax/persistence/Cacheable.html上的文檔
另外,看看這個相關的問題: 如何使用JPA2的@Cacheable代替Hibernate的@Cache
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.