gpt4 book ai didi

java - Spring Hibernate ehcache 设置

转载 作者:行者123 更新时间:2023-12-04 06:31:27 26 4
gpt4 key购买 nike

我在使 hibernate 二级缓存用于缓存域对象时遇到了一些问题。根据 ehcache documentation 向我现有的工作应用程序添加缓存应该不会太复杂。

我有以下设置(仅概述了相关的片段):

@Entity
@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE
public void Entity {
// ...
}

ehcache-entity.xml
<cache name="com.company.Entity" eternal="false"
maxElementsInMemory="10000" overflowToDisk="true" diskPersistent="false"
timeToIdleSeconds="0" timeToLiveSeconds="300"
memoryStoreEvictionPolicy="LRU" />

应用上下文.xml
<bean class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
<property name="dataSource" ref="ds" />
<property name="annotatedClasses">
<list>
<value>com.company.Entity</value>
</list>
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.generate_statistics">true</prop>
<prop key="hibernate.cache.use_second_level_cache">true</prop>
<prop key="net.sf.ehcache.configurationResourceName">/ehcache-entity.xml</prop>
<prop key="hibernate.cache.region.factory_class">net.sf.ehcache.hibernate.SingletonEhCacheRegionFactory</prop>
....
</property>
</bean>

Maven 依赖项
   <dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-annotations</artifactId>
<version>3.4.0.GA</version>
</dependency>

<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-hibernate3</artifactId>
<version>2.0.8</version>
<exclusions>
<exclusion>
<artifactId>hibernate</artifactId>
<groupId>org.hibernate</groupId>
</exclusion>
</exclusions>
</dependency>

<dependency>
<groupId>net.sf.ehcache</groupId>
<artifactId>ehcache-core</artifactId>
<version>2.3.2</version>
</dependency>

使用启用缓存统计的测试类:
    Cache cache = cacheManager.getCache("com.company.Entity");
cache.setStatisticsAccuracy(Statistics.STATISTICS_ACCURACY_GUARANTEED);
cache.setStatisticsEnabled(true);
// store, read etc ...
cache.getStatistics().getMemoryStoreObjectCount(); // returns 0

似乎没有操作会触发任何缓存更改。我错过了什么?目前我正在使用 HibernateTemplate在 DAO 中,也许这会产生一些影响。

[编辑]

设置为 DEBUG 时唯一的 ehcache 日志输出是:
SettingsFactory: Cache region factory : net.sf.ehcache.hibernate.SingletonEhCacheRegionFactory

最佳答案

您是否需要手动告诉 Hibernate 使用 EHCache 提供程序?我从来没有真正确定是否需要这样做,但是 Hibernate 确实支持许多缓存提供程序,因此我怀疑可能有必要明确告诉 Hibernate 您想要哪个。尝试将此属性添加到 ApplicationContext.xml:

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

关于java - Spring Hibernate ehcache 设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5364752/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com