使用一个Hibernate映射的多个二级缓存设置

时间:2011-12-20 13:51:08

标签: java hibernate hibernate-mapping second-level-cache

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

大多数应用程序都非常关注编辑单个实体,因此无法依赖二级缓存。

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

  1. 应使用相同的实体映射
  2. 但必须使用第二级和查询缓存。
  3. 如何配置缓存?

    几点意见:

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

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

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

1 个答案:

答案 0 :(得分:1)

看起来您可以使用<class-cache>元素在hibernate.cfg.xml而不是实体映射中配置缓存,请参阅3.8. XML configuration file

我想你可以负担得起创建一个使用现有映射的自定义hibernate.cfg.xml,如果没有,那么Configuration.setCacheConcurrencyStrategy()个方法也可以提供帮助。