为什么不推荐使用EhCacheProvider?

我正在将hibernate项目配置为使用第二级缓存提供程序,以便可以利用查询缓存。

我向ehcache添加了一个依赖项:

   <dependency>

<groupId>net.sf.ehcache</groupId>

<artifactId>ehcache-core</artifactId>

<version>2.2.0</version>

</dependency>

我认为我要使用的提供程序类是:

net.sf.ehcache.hibernateEhCacheProvider

在eclipse中查看引用的库时,我@DeprecatedEhCacheProvider和上都看到了注释SingletonEhCacheProvider。是什么赋予了?我可以使用最新的替代供应商吗?

我正在使用hibernate版本3.4.0.GA,以防万一。

回答:

是什么赋予了?我可以使用最新的替代供应商吗?

不推荐使用它们,而赞成使用Hibernate 3.3 / 3.5 SPI实现其类的类CacheRegionFactory。这些实现分别是:

  • net.sf.ehcache.hibernate.EhCacheRegionFactory
  • net.sf.ehcache.hibernate.SingletonEhCacheRegionFactory

新的SPI的优点包括:

*

SPI删除了Hibernate缓存管道中的同步。这取决于如何控制并发访问的缓存实现。从1.6开始,Ehcache取消了同步化,转而采用CAS方法。对于繁重的工作量而言,结果令人印象深刻。

* 新的SPI对缓存区域存储和缓存策略提供了更精细的控制。Ehcache

2.0利用此优势来减少内存使用。它提供只读,非严格的读写策略和所有集群安全的读写策略。

* Ehcache 2.0可以很容易地与Terracotta Server

Array一起分发。这为您提供了群集安全的操作(一致性),HA并可以扩展到进程内缓存的限制之外,而这正是当今大多数Hibernate用户使用Ehcache的方式。现有的ehcache.jar和ehcache-

terracotta.jar提供了客户端库。(…)

因此,鼓励您使用新的实现。通过以下属性完成配置:

<property name="hibernate.cache.region.factory_class">

net.sf.ehcache.hibernate.SingletonEhCacheRegionFactory

</property>

那代替了hibernate.cache.provider_class财产。

参考文献

  • hibernate博客

    • Ehcache 2.0支持新的Hibernate 3.3缓存提供程序

  • EhCache文档

    • 从2.0之前的Ehcache版本升级
    • hibernate二级缓存

以上是 为什么不推荐使用EhCacheProvider? 的全部内容, 来源链接: utcz.com/qa/402105.html

回到顶部