SingletonEhCacheRegionFactory vs EhCacheRegionFactory

Bra*_*pit 33 java hibernate ehcache

这个链接(来自Ehcache的创建者)说当你只有一个Hibernate SessionFactory时你应该使用SingletonEhCacheRegionFactory,当你有多个时,你应该使用EhCacheRegionFactory.

但是当你只有一个SessionFactory时,EhCacheRegionFactory不会是单个实例吗?

那么,SingletonEhCacheRegionFactory有什么好处呢?为什么不一直使用EhCacheRegionFactory,因为它可以用于一个SessionFactory或多个?

仅供参考:我使用的是Ehcache 2.4.2和Hibernate 3.6.5

Mat*_*tej 10

非单例EhCacheRegionFactory允许您使用net.sf.ehcache.configurationResourceName属性为每个Hibernate实例单独配置EHCache .该SingletonEhCacheRegionFactory分享所有的Hibernate会话工厂中相同的EHCache配置.

EHCache文档建议使用非单例版本.

编辑:此信息适用于EHCache 2.8.不确定最新版本中有多少变化.

  • 感谢您的链接。该链接提到当您有多个缓存时使用非单版本,但是原始问题链接到一个错误,该错误说“最好使用SingletonEhCacheProvider”。我只是不明白为什么。 (2认同)

小智 0

我想通过使用 SingletonEhCacheRegionFactory 您不需要维护(或确保)EhCacheRegionFactory 是单例。您可以在任何地方创建新的 SingletonEhCacheRegionFactory(),它仍然是整个应用程序中的单例。

使用 EhCacheRegionFactory 时,您需要相应地显式配置对象的范围以确保它是单例的。