[英]Spring: hibernate + ehcache
我正在使用一个使用hibernate的spring项目,并期望使用ehcache实现二级缓存。 我看到了很多方法:
spring-modules-cache
引入了@Cacheable
注释
ehcache-spring-annotations
一个工具集,旨在成为spring-modules-cache
的继承者。
Hibernate cache
很好地集成到hibernate本身,以使用例如@Cache
注释执行缓存。
使用代理的Programmatic cache
。 基于注释的配置很快变得有限或复杂(例如,几个级别的注释嵌套)
我个人认为spring-modules-cache
不够彻底,因此我可能更愿意考虑更积极开发的ehcache-spring-annotations
。 Hibernate cache
虽然似乎是最完整的实现(例如,读取和写入缓存等)。
什么会激发使用哪个工具集? 请分享您的缓存体验......
我们的项目使用选项3.我们将注释org.hibernate.annotations.Cache
应用于我们在Ehcache中缓存的实体,使用ehcache.xml
配置Ehcache,并在hibernate.cfg.xml
启用和配置Hibernate二级缓存 :
<!-- Enable the second-level cache -->
<property name="hibernate.cache.provider_class">
net.sf.ehcache.hibernate.EhCacheProvider
</property>
<property name="hibernate.cache.region.factory_class">
net.sf.ehcache.hibernate.EhCacheRegionFactory
</property>
<property name="hibernate.cache.use_query_cache">true</property>
<property name="hibernate.cache.use_second_level_cache">true</property>
<property name="hibernate.cache.use_structured_entries">true</property>
<property name="hibernate.cache.generate_statistics">true</property>
对于大多数实体,我们使用缓存并发策略CacheConcurrencyStrategy.TRANSACTIONAL
:
@Cache(usage = CacheConcurrencyStrategy.TRANSACTIONAL)
我们的Maven项目使用Hibernate 3.3.2GA和Ehcache 2.2.0:
<dependency>
<groupId>net.sf.ehcache</groupId>
<artifactId>ehcache-core</artifactId>
<version>2.2.0</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>3.3.2.GA</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-commons-annotations</artifactId>
<version>3.3.0.ga</version>
<exclusions>
<exclusion>
<groupId>net.sf.ehcache</groupId>
<artifactId>ehcache</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-annotations</artifactId>
<version>3.2.1.ga</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>ejb3-persistence</artifactId>
<version>3.3.2.Beta1</version>
</dependency>
Spring 3.1有一个新的内置缓存抽象。 在这里阅读
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.