我正在将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。是什么赋予了?我可以使用最新的替代供应商吗?
@Deprecated
EhCacheProvider
SingletonEhCacheProvider
我正在使用hibernate版本3.4.0.GA,以防万一。
是什么赋予了?我可以使用最新的替代供应商吗?
不推荐使用它们,而赞成使用Hibernate 3.3 / 3.5 SPI实现其类的类CacheRegionFactory。这些实现分别是:
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.cache.provider_class