当前位置: 首页 > 面试题库 >

为什么不推荐使用EhCacheProvider?

仲智
2023-03-14
问题内容

我正在将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二级缓存


 类似资料:
  • 问题内容: 众所周知,Java 中的接口已损坏。造成这种情况的原因很多,我将不再赘述。其他人已经做到了。这也是Java架构师本身的立场。 因此,我的问题是:为什么还不被弃用?如果核心Java团队已确定它已损坏,那么他们还必须考虑过时。他们反对这样做的原因是什么(在Java 8中仍不建议弃用)? 问题答案: 有一个错误在1997年提交给Java的错误数据库有关添加方法,所以将不再是无用的。它以“无法

  • 问题内容: 我曾经在hibernate 3中使用getHibernateTemplate(),现在我转向了Hibernate 4,在这里我找不到以下类: 在这里我已经阅读过有关它的更多信息,不建议使用 http://forum.springsource.org/showthread.php?117227-Missing-Hibernate- Classes-Interfaces-in-spring

  • 问题内容: 我曾经在hibernate 3中使用getHibernateTemplate(),现在我转向了Hibernate 4,在这里我找不到以下类: 有人可以解释我为什么吗?在hibernate4中,我现在需要执行所有任务,例如提交,关闭,刷新由getHibernateTemplate()方法自动管理的事务? 问题答案: 因为它的主要目的是使Hibernate会话绑定到当前的Spring事务(

  • 问题内容: HTML从早期开始就有框架,但是在最新版本中已弃用。许多浏览器(我曾尝试使用Internet Explorer)甚至无法正确显示框架。 为什么要这样做?镜框的缺点是什么? 问题答案: 雅各布·尼尔森(JakobNielsen)在1996年的专栏批评镜框。一些关键点: 框架会阻止用户正确标记页面。加载带有书签的框架集页面时,用户先前在框架内单击鼠标没有关系。仅保存外部URL,用户必须导航

  • 问题内容: 从Guava 10开始,已弃用,并且中没有对应的方法。 为什么要进行此更改?我需要与使用它的现有代码做什么? 问题答案: 我写这个问题的原因是,起初,我确实确实想知道为什么要这么做(因为我已有使用过的代码)。但是,反思的原因很明显,因此我决定将其发布在这里,以防其他人也使用并想知道同一件事。 简而言之,原因是从一开始就没有任何意义。因此,最初包含它本身就是一个错误,Guava开发人员正

  • 问题内容: (此问题不同于您为什么要实现finalize()?此问题与从Java平台弃用有关,另一个问题与在应用程序中是否应使用此机制有关。) 为什么在Java 9中不推荐使用该方法? 是的,它可能以错误的方式使用(例如,从垃圾收集中保存对象(虽然仅一次)或尝试关闭其中的某些本机资源(总比不完全关闭要好))以及许多其他方法可能会被错误地使用。 那么,是真的如此危险或绝对没有用,有必要将其逐出Jav