为什么不推荐使用EhCacheProvider?
我正在将hibernate项目配置为使用第二级缓存提供程序,以便可以利用查询缓存。
我向ehcache添加了一个依赖项:
<dependency> <groupId>net.sf.ehcache</groupId>
<artifactId>ehcache-core</artifactId>
<version>2.2.0</version>
</dependency>
我认为我要使用的提供程序类是:
net.sf.ehcache.hibernateEhCacheProvider
在eclipse中查看引用的库时,我@Deprecated
在EhCacheProvider
和上都看到了注释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