首页 文章

Spring 4 Ehcache 3 Hibernate 5缓存默认模板设置

提问于
浏览
3

我的项目是在Spring 4.3.4,Hibernate 5.2.4和Ehcache 3.3上

我正在寻找一个单独的JSR-107(JCache)CacheManager的解决方案,为整个应用程序提供:

  • Spring缓存 - 具有明确命名的Caches的数量;

  • Hibernate L2缓存 - 能够隐式生成任意数量的区域(实际上也就是Caches)

这里主要关注的是Hibernate . 实际上,这是为其区域设置默认模板的问题 . 在审查了很多主题后,我还没有发现一个完全合适的解决方案 .

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

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

但是该解决方案涉及几个名为Cache区域的显式声明,不仅适用于Spring,甚至适用于Hibernate,正如我们在CacheConfiguration#createCacheConfigurations方法中所能找到的那样 .

这在包含100500个不同实体,NaturalKeys等的实际项目中是不方便的,这些实体由Hibernate管理,因为对于所有它们,它应该动态创建适当的区域 . 我将Hibernate的RegionFactory的主要功能区分为能够自动完成这项神奇工作的能力 . 但是我们在customized JCacheRegionFactory类的尖端项目中看到了什么?直接禁止它生成新区域,这是通过无条件的例外实现的,任何尝试都会被抛出(甚至用"...but makes sure all caches are already existing to prevent spontaneous creation of badly configured caches..."评论注意到) .

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

2 回答

相关问题