最近发布的 Ehcache 2.0,通过其 CacheRegionFactory 支持新的 Hibernate 3.3/3.5 SPI。
这个新提供程序有以下优点
- Hibernate 缓存管道中的 SPI 移除了同步。如何控制并发访问取决于缓存实现。Ehcache 从 1.6 版本开始,为了更高效的 CAS 方法移除了同步。对于高负载,结果是 令人印象深刻。
- 新的 SPI 提供了对缓存区域存储和缓存策略的更细粒度控制。Ehcache 2.0 利用这一点来减少内存使用。它提供了只读、非严格读写和读写策略,所有都是集群安全的。
- Ehcache 2.0 可以与 Terracotta Server Array 简单地分发。这为您提供了集群安全操作(一致性)、高可用性和扩展到进程内缓存限制之外的能力,这是大多数 Hibernate 用户今天使用 Ehcache 的方式。存在 ehcache.jar 和 ehcache-terracotta.jar,它提供了客户端库。只需在 ehcache.xml 中几行配置即可启用它。
<ehcache>
<terracottaConfig url="someserver:9510"/>
<defaultCache
maxElementsInMemory="10000"
eternal="false"
timeToLiveSeconds="600"
<terracotta clustered="true" coherent="true"/>
/>
<cache name="com.company.domain.Pets"
maxElementsInMemory="10000"
eternal=”true”>
<terracotta clustered="true" coherent="true"/>
</cache>
</cache>
</ehcache>
启用 Ehcache 2.0 作为 CacheRegionFactory
Hibernate 附带了各种版本的 Ehcache。要获取 2.0 版本,您可以选择 下载 它,如果您是基于 Maven 的,请添加以下 Maven 片段
<dependency>
<groupId>net.sf.ehcache</groupId>
<artifactId>ehcache</artifactId>
<version>[2.0.0,]</version>
<type>pom</type>
</dependency>
然后您可以在您的 hibernate 设置中启用它
<property name="hibernate.cache.region.factory_class">
net.sf.ehcache.hibernate.SingletonEhCacheRegionFactory
</property>
更多信息
我们一直在更新 Ehcache.org 上的 Hibernate 章节。我们计划继续在那里添加技巧和窍门,以及关于 Hibernate 缓存与 Ehcache 的深入参考信息。