最近发布的 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 的深入参考信息。