具有一个 Hibernate 映射的多个二级缓存设置

发布于 2024-12-22 06:05:54 字数 942 浏览 2 评论 0原文

假设有多个 Java 应用程序共享一个公共实体模块(实体类 + Hibernate XML 映射)。目前,实体未启用缓存(映射中没有 元素)。

大多数应用程序很大程度上关注编辑单个实体,因此它不能依赖二级缓存。

现在,实现了一个新应用程序,它

  1. 应该使用相同的实体映射
  2. ,但必须使用二级缓存和查询缓存。

如何配置缓存?

几个观察结果:

  1. 我无法将 元素添加到映射中,因为这会破坏其他应用程序不要配置这样的缓存并且不受我的影响:

    二级缓存未启用[hibernate.cache.use_second_level_cache | hibernate.cache.use_query_cache]

  2. 我找不到激活实体以在其映射之外进行缓存的方法。 ehcache.xml 中,为实体设置缓存区域也无济于事
  3. 即使我可以更改所有其他应用程序并将 添加到 实体映射,通过设置 hibernate.cache.use_second_level_cache=false 来禁用缓存是行不通的,尽管在 http://docs.jboss.org/hibernate/core /3.3/reference/en/html/session-configuration.html,表3.5

Supose that there multiple Java applications which share a common entity module (Entity classes + Hibernate XML mappings). Currently, the entities are not enabled for caching (no <cache.../> elements within the mappings).

Most of the applications are largly concerned with editing single entities an thus it cannot relie on second level cache.

Now, a new application is implemented which

  1. Should use the same entity mappings
  2. but must use 2nd level and query cache.

How to configure the cache?

Several observations:

  1. I cannot add <cache.../> elements to the mappings since this would break the other applications which do not configure such a cache and which are not under my influence:

    Second-level cache is not enabled for usage [hibernate.cache.use_second_level_cache | hibernate.cache.use_query_cache]

  2. I can't find a way to activate an entity for caching outside of its mapping. Setting up a cache region for an entity in ehcache.xml does not help
  3. Even if I could change all the other applications and add <cache.../> to the entity mappings, it does not work to disable the cache by setting hibernate.cache.use_second_level_cache=false although it is said so in http://docs.jboss.org/hibernate/core/3.3/reference/en/html/session-configuration.html, table 3.5

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

百善笑为先 2024-12-29 06:05:54

看起来您可以使用 元素在 hibernate.cfg.xml 而不是实体映射中配置缓存,请参阅 3.8。 XML 配置文件

我想您有能力创建一个使用现有映射的自定义 hibernate.cfg.xml ,如果没有,也有 Configuration.setCacheConcurrencyStrategy() 方法可能会有所帮助。

It looks like you can use <class-cache> elements to configure caching in hibernate.cfg.xml rather than in entity mappings, see 3.8. XML configuration file.

I guess you can afford creating a custom hibernate.cfg.xml that would use existing mappings, and if not, there are Configuration.setCacheConcurrencyStrategy() methods that might help as well.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文