为什么 EhCacheProvider 被弃用?

发布于 2024-09-18 07:51:49 字数 562 浏览 6 评论 0原文

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

我添加了对ehcache的依赖:

   <dependency>
    <groupId>net.sf.ehcache</groupId>
    <artifactId>ehcache-core</artifactId>
    <version>2.2.0</version>
   </dependency>

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

net.sf.ehcache.hibernateEhCacheProvider

当我在eclipse中查看引用的库时,我在EhCacheProvider@Deprecated注释>,以及 SingletonEhCacheProvider。什么给?我可以使用最新的替代提供商吗?

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

I am configuring my hibernate project to use a 2nd-level cache provider, so that I can take advantage of query caching.

I added a dependency to ehcache:

   <dependency>
    <groupId>net.sf.ehcache</groupId>
    <artifactId>ehcache-core</artifactId>
    <version>2.2.0</version>
   </dependency>

I think that the provider class I want to use is:

net.sf.ehcache.hibernateEhCacheProvider

When I look at the referenced libraries in eclipse, I see the @Deprecated annotation on EhCacheProvider, and also on SingletonEhCacheProvider. What gives? Is there an up-to-date replacement provider that I can use?

I am using hibernate version 3.4.0.GA, in case it matters.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

薆情海 2024-09-25 07:51:49

什么给了?我可以使用最新的替代提供商吗?

它们已被弃用,取而代之的是使用其 CacheRegionFactory 实现新 Hibernate 3.3/3.5 SPI 的类。这些实现分别是:

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

新 SPI 的优点包括:

  • SPI 删除了 Hibernate 缓存管道中的同步。这是
    留给缓存实现
    关于如何控制并发访问。
    Ehcache,从1.6开始,被移除
    有利于 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 属性。

参考资料

What gives? Is there an up-to-date replacement provider that I can use?

They have been deprecated in favor of the classes implementing the new Hibernate 3.3/3.5 SPI with its CacheRegionFactory. These implementations are respectively:

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

Benefits of the new SPI include:

  • The SPI removed synchronization in the Hibernate cache plumbing. It is
    left up to the caching implementation
    on how to control concurrent access.
    Ehcache, starting with 1.6, removed
    syncrhonization in favour of a CAS
    approach. The results, for heavy
    workloads are impressive.
  • The new SPI provides finer grained control over cache region storage and
    cache strategies. Ehcache 2.0 takes
    advantage of this to reduce memory
    use. It provides read only, nonstrict
    read write and read write strategies,
    all cluster safe.
  • Ehcache 2.0 is readily distributable with Terracotta Server Array. This
    gives you cluster safe operation
    (coherency), HA and scale beyond the
    limits of an in-process cache, which
    is how most Hibernate users use
    Ehcache today. There is the existing
    ehcache.jar and ehcache-terracotta.jar
    which provides the client library. (...)

You are thus encouraged to use the new implementations. Configuration is done via the following property:

<property name="hibernate.cache.region.factory_class">
    net.sf.ehcache.hibernate.SingletonEhCacheRegionFactory
</property>

That replaces the hibernate.cache.provider_class property.

References

我们只是彼此的过ke 2024-09-25 07:51:49

如果您希望使用 Hibernate 4.0.0.Final. 作为 hibernate.cache.region.factory_class 属性的值,请使用:

  • org.hibernate.cache.ehcache.SingletonEhCacheRegionFactory net.sf.ehcache.hibernate.SingletonEhCacheRegionFactory
  • org.hibernate.cache.ehcache.EhCacheRegionFactory 而不是 net.sf.ehcache.hibernate.EhCacheRegionFactory code>

否则你最终会遇到一些内部 ClassNotFound 异常

if you wish to use Hibernate 4.0.0.Final. for the value of hibernate.cache.region.factory_class property use:

  • org.hibernate.cache.ehcache.SingletonEhCacheRegionFactory instead of net.sf.ehcache.hibernate.SingletonEhCacheRegionFactory and
  • org.hibernate.cache.ehcache.EhCacheRegionFactory instead of net.sf.ehcache.hibernate.EhCacheRegionFactory

Otherwise you will end up with some internal ClassNotFound exceptions

沩ん囻菔务 2024-09-25 07:51:49

EhCache 2 现已弃用并停止使用。您应该使用 EhCache 3。在 5.3 之后的 Hibernate 版本中,建议使用 JSR-107 (JCache)。为此,需要 2 个依赖项:

<dependency>
     <groupId>org.hibernate</groupId>
     <artifactId>hibernate-jcache</artifactId>
     <version>your_hibernate_version</version>
</dependency>

<dependency>
    <groupId>org.ehcache</groupId>
    <artifactId>ehcache</artifactId>
    <version>3.6.3</version>
    <scope>runtime</scope>
</dependency>

第一个依赖项提供与 Hibernate 兼容的 JSR-107 API。第二个是实际的缓存实现 - EhCache 3。

还必须使用新的 RegionFactory

hibernate.cache.region.factory_class=org.hibernate.cache.jcache.JCacheRegionFactory

EhCache 2 is now deprecated and discontinued. You should use EhCache 3 instead. In Hibernate versions after 5.3 it is recommended to use JSR-107 (JCache). In order to do that 2 dependencies are needed:

<dependency>
     <groupId>org.hibernate</groupId>
     <artifactId>hibernate-jcache</artifactId>
     <version>your_hibernate_version</version>
</dependency>

<dependency>
    <groupId>org.ehcache</groupId>
    <artifactId>ehcache</artifactId>
    <version>3.6.3</version>
    <scope>runtime</scope>
</dependency>

The first one provides JSR-107 API compliant with Hibernate. The second one is actual cache implementation - EhCache 3.

Also new RegionFactory must be used:

hibernate.cache.region.factory_class=org.hibernate.cache.jcache.JCacheRegionFactory
娇俏 2024-09-25 07:51:49

EhCache 文档说从 Hibernate 3.3 开始你应该使用:(

<property name="hibernate.cache.region.factory_class">
    net.sf.ehcache.hibernate.EhCacheRegionFactory
</property>

net .sf.ehcache.hibernate.SingletonEhCacheRegionFactory)

The EhCache docs say that from Hibernate 3.3 onward you should use:

<property name="hibernate.cache.region.factory_class">
    net.sf.ehcache.hibernate.EhCacheRegionFactory
</property>

(or net.sf.ehcache.hibernate.SingletonEhCacheRegionFactory)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文