一尘不染

使用Spring休眠第二级缓存

hibernate

我正在使用Spring + JPA +
Hibernate。我正在尝试启用Hibernate的二级缓存。在我的春天,applicationContext.xml我有:

<prop key="hibernate.cache.provider_class">net.sf.ehcache.hibernate.SingletonEhCacheProvider</prop>
<prop key="hibernate.cache.provider_configuration_file_resource_path">/ehcache.xml</prop>

运行时出现错误:

Caused by: org.hibernate.HibernateException: Could not instantiate cache implementation
     at org.hibernate.cache.CacheFactory.createCache(CacheFactory.java:64)

Caused by: org.hibernate.cache.NoCachingEnabledException: Second-level cache is not enabled for usage [hibernate.cache.use_second_level_cache | hibernate.cache.use_query_cache]
     at org.hibernate.cache.NoCacheProvider.buildCache(NoCacheProvider.java:21)

所以有人抱怨我没有启用二级缓存。我试图通过添加到我的启用它applicationContext.xml

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

但是仍然没有喜悦。我还尝试将其添加到ehcache.xml中:

<property name="hibernate.cache.use_second_level_cache">true</property>

但这仍然行不通。将更provider_class改为org.hibernate.cache.EhCacheProvider也无济于事:

<prop key="hibernate.cache.provider_class">org.hibernate.cache.EhCacheProvider</prop>

我的实体类被注释为使用缓存

@Cache(usage=CacheConcurrencyStrategy.READ_ONLY)

那么,如何启用二级缓存?

编辑: 这是在bean下:

<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalEntityManagerFactoryBean">

解决: 由于我正在使用LocalEntityManagerFactoryBean它,因此从获得它的设置META- INF/persistence.xml。我的设置applicationContext.xml甚至都没有被读取。


阅读 259

收藏
2020-06-20

共1个答案

一尘不染

我没有回答,但是发帖人自己找到答案并不明显。我正在重新发布他的答案:

解决

由于我正在使用,LocalEntityManagerFactoryBean因此它从获取设置META- INF/persistence.xml。我的设置applicationContext.xml甚至都没有被读取。

2020-06-20