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

问题描述 投票:0回答:2

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

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

  • Spring 缓存 - 具有显式命名的缓存数量;
  • Hibernate L2 缓存 - 能够隐式生成任意数量的区域(实际上也是缓存)

这里主要关注的是 Hibernate。事实上,这是为其区域设置默认模板的问题。在审查了很多主题之后,我还没有找到完全合适的解决方案。

所以,如果存在的话,还请专家指出。高度赞赏仅以编程方式进行配置(不需要 ehcache.xml)。

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

但是该解决方案涉及显式声明多个命名缓存区域,不仅适用于 Spring,甚至适用于 Hibernate,正如我们在 CacheConfiguration#createCacheConfigurations 方法中可以找到的那样。

这在包含 100500 个由 Hibernate 管理的不同实体、NaturalKeys 等的真实项目中很不方便,因为它应该为所有这些实体动态创建适当的区域。我将 Hibernate RegionFactory 的主要功能区分为自动完成这项神奇工作的能力。但是我们在customized JCacheRegionFactory类中的指向项目中看到了什么?直接禁止它生成新区域,这是通过无条件异常来实现的,任何尝试这样做都会抛出无条件异常(甚至用“...但确保所有缓存已经存在以防止自发发生”来实现)创建配置错误的缓存...”评论)。

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

spring hibernate ehcache
2个回答
2
投票

ehcache3-samples github repo 上有一个 JHipster 全栈演示示例

此示例基于 Spring boot 以编程方式设置 ehcache3 缓存,将其公开为 JSR-107 CacheManager

此缓存与 Hibernate 结合使用并且也可以独立使用。


1
投票
我们永远不需要默认配置(又名

new MutableConfiguration

)。但是,设置有意义的默认值是可以接受的。所以确实,在你的情况下,我会使用定制的 
JCacheRegionFactory

请参阅

这篇文章

© www.soinside.com 2019 - 2024. All rights reserved.