我的项目是在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 回答
有一个JHipster fullstack demo example on ehcache3-samples github repo
此示例基于Spring引导programmatically sets up an ehcache3 cache,将其公开为a JSR-107 CacheManager
此缓存使用in conjunction with Hibernate和also independently .
我们从不想要默认配置(又名
new MutableConfiguration
) . 但是,可以设置有意义的默认值 . 所以,在你的情况下,我会使用自定义的JCacheRegionFactory
.请参阅this article .