Hibernate 为什么不推荐使用EhCacheProvider?
我正在将hibernate项目配置为使用二级缓存提供程序,以便利用查询缓存 我向ehcache添加了一个依赖项:Hibernate 为什么不推荐使用EhCacheProvider?,hibernate,caching,ehcache,terracotta,Hibernate,Caching,Ehcache,Terracotta,我正在将hibernate项目配置为使用二级缓存提供程序,以便利用查询缓存 我向ehcache添加了一个依赖项: <dependency> <groupId>net.sf.ehcache</groupId> <artifactId>ehcache-core</artifactId> <version>2.2.0</version> </dependency> 当我
<dependency>
<groupId>net.sf.ehcache</groupId>
<artifactId>ehcache-core</artifactId>
<version>2.2.0</version>
</dependency>
当我查看eclipse中引用的库时,我看到EhCacheProvider
上的@Deprecated
注释,以及SingletonEhCacheProvider
上的注释。有什么好处?是否有最新的替换供应商可供我使用
我使用的是hibernate版本3.4.0.GA,以防万一。我说从hibernate 3.3开始,您应该使用:
<property name="hibernate.cache.region.factory_class">
net.sf.ehcache.hibernate.EhCacheRegionFactory
</property>
net.sf.ehcache.hibernate.EhCacheRegionFactory
(或net.sf.ehcache.hibernate.SingletonEhCacheRegionFactory
)
有什么好处?是否有最新的替换供应商可供我使用
它们已经被弃用,转而支持使用其CacheRegionFactory
实现新的Hibernate 3.3/3.5 SPI的类。这些实现分别是:
net.sf.ehcache.hibernate.EhCacheRegionFactory
net.sf.ehcache.hibernate.SingletonEhCacheRegionFactory
- SPI删除了Hibernate缓存管道中的同步。它是 由缓存实现决定 关于如何控制并发访问。 删除了从1.6开始的Ehcache 有利于CAS的同步化 方法结果,对于重 工作量令人印象深刻
- 新的SPI对缓存区域和存储提供了更细粒度的控制 缓存策略。Ehcache 2.0需要 这样做的好处是减少内存 使用。它提供只读、非严格的 读写和读写策略, 所有群集都是安全的
- Ehcache2.0很容易与Terracotta服务器阵列一起分发。这 为您提供群集安全操作 (一致性)、HA和超出 进程内缓存的限制 这是大多数Hibernate用户使用的方式 我今天去。现有的 ehcache.jar和ehcache-terracotta.jar 它提供了客户端库。(……)
<property name="hibernate.cache.region.factory_class">
net.sf.ehcache.hibernate.SingletonEhCacheRegionFactory
</property>
net.sf.ehcache.hibernate.SingletonEhCacheRegionFactory
它替换了hibernate.cache.provider类的属性
工具书类
- Hibernate博客
- EhCache文档
而不是org.hibernate.cache.ehcache.SingletonEhCacheRegionFactory
和net.sf.ehcache.hibernate.SingletonEhCacheRegionFactory
而不是org.hibernate.cache.ehcache.EhCacheRegionFactory
net.sf.ehcache.hibernate.EhCacheRegionFactory
否则,最终会出现一些内部ClassNotFound异常EhCache 2现在已弃用并停止使用。您应该改用EhCache 3。在5.3之后的Hibernate版本中,建议使用JSR-107(JCache)。为此,需要两个依赖项:
<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>
非常好的观点…这是一位陶土工程师的原因:(->第二篇帖子)在这里不起作用,因为找不到类:org.hibernate.cache.TimestampsRegion。我在类路径上有ehcache、jcache和hibernate 5。jcache是ehcache吗?我很困惑。什么是JCache。为什么eCacherRegionFactory类仍然没有被弃用。它也没有获取EhCache的配置文件。xml@mmm版本3.0中的Ehcache是一个JCacheAPI实现(也称为JSR-107)。看看Ehcache文档:这是否意味着我现在必须对我的实体进行注释?我以前没必要这么做。我的旧配置现在不起作用。我在这里发了一个新帖子:
<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.cache.region.factory_class=org.hibernate.cache.jcache.JCacheRegionFactory