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


返回顶部