2017-04-07 75 views
3

我的项目是在春天4.3.4,5.2.4休眠和3.3的Ehcache弹簧4的Ehcache 3休眠5缓存默认模板设置

我要寻找一个奇异JSR-107(的JCache)CacheManager的一个解决方案整个应用程序提供:

  • 春天缓存 - 有明确命名的高速缓存的数量;
  • Hibernate的L2高速缓存 - 与隐含产生任何数量的区域(这实际上是在缓存太)的

这里主要关注的是休眠的能力。实际上,这是为其地区设置默认模板的问题。在回顾了很多主题之后,我还没有发现一个完全适合的解决方案。

所以,如果它存在,我恳请专家指出它。高度赞赏编程唯一的配置方式(ehcache.xml是不需要的)。

加:(回答@Anthony Dahanne): 我在发布这个主题之前就已经看到了您指定的项目中的解决方案。更重要的是,这个项目是我一周前调查的起点。

但是,该解决方案不仅涉及到Spring的几个名为Cache区域的显式声明,而且涉及到Hibernate,因为我们可以在CacheConfiguration#createCacheConfigurations方法中找到它。

这在实际项目中很不方便,其中包含100500个由Hibernate管理的不同实体,NaturalKeys等等,因为对于所有的应用程序,它都应该在运行中创建适当的区域。我将Hibernate的RegionFactory的主要功能区分为能够自动完成这项神奇工作的能力。但是我们在customized JCacheRegionFactory课程的指出的项目中看到了什么?直接禁止它产生新的区域,这是通过无条件的例外来实现的,这将导致任何尝试这样做(它甚至被指出“......但确保所有高速缓存已经存在以防止自发创建配置不当的缓存......“评论)。

理想的解决方案必须能够设置一个唯一的“默认模板”(在CacheManager级别上),就像在encache.xml中工作一样(... jcache:defaults default-template =“myDefaultTemplate .. ),...但没有XML。

回答

1
+0

亲爱的Anthony Dahanne,谢谢你的回应!您指向的JHipster项目作为不同缓存方面用法的示例非常有用。但它使用明确的方式来定义Hibernate的区域,这不适合我。在我的第一篇文章中看到我的附加说明。所以,我不能完全满意所提供的解决方案,并会继续询问。 –

0

我们从不需要默认配置(aka new MutableConfiguration)。但是,设置有意义的默认值是可以接受的所以,在你的情况下,我会使用定制的JCacheRegionFactory

查看this article关于它。

+0

亲爱的亨利!首先,感谢您链接到您的文章。另外,我是您的“Ehcache 3样本”项目的感谢调查员。但我不能同意Hibernate的区域应该明确定义。看看我的添加在一个初始的帖子。我不想获得“随机默认配置”。我希望在不干预Hibernate的RegionFactory的情况下预先配置它,但只需在CacheManager级别上提供一些基本配置,就像我们使用带有定义的“default-template”的ehcache.xml一样。我希望用Java以编程方式完成它。可能吗? –

+0

你说得对,它不可能通过编程来定义模板。主要是因为重复使用方法几乎是一样的。它也更加灵活。你为什么不想扩展'JCacheRegionFactory'?这就是你将如何获得预配置的缓存和干净的方式来做到这一点。 – Henri