【问题标题】:Configure shared cache mode in hibernate在hibernate中配置共享缓存模式
【发布时间】:2015-06-25 04:45:27
【问题描述】:

我正在使用 spring - hibernate 集成,并且我有 hibernate.cfg.xml,它在 xml 中有 session-factory 节点。

在带有 jpa 的 persistense.xml 中,我使用 shred-cache-mode 进行二级缓存。

我想使用 hibernate 配置文件进行相同的配置以使其成为 ENABLE_SELECTIVE,但似乎不可能。

【问题讨论】:

  • 据我记得,如果使用纯 Hibernate,默认行为是只缓存那些带有@Cacheable 的实体/集合。你到底有什么问题?
  • 我一直在寻找我想有选择地启用缓存。是否可以从休眠配置文件配置其他模式?
  • AFAIK,重申一下,我认为 Hibernate 在运行 Hibernate 本机时已经有选择地启用了开箱即用的缓存。我不知道 hibernate.cfg.xml 中的任何其他选项

标签: hibernate sessionfactory second-level-cache


【解决方案1】:

我也不确定,但我也假设 ENABLE_SELECTIVE 已经是默认设置,因为使用@Cacheable 你会以某种方式选择性地激活它。

但是,根据Spring Boot + JPA2 + Hibernate - enable second level cache 上的答案使用spring boot,您似乎可以使用application.properties(spring boot 的配置文件)通过如下条目影响缓存模式:

spring.jpa.properties.javax.persistence.sharedCache.mode=ENABLE_SELECTIVE

也许您可以将其转移到 XML 世界中,并在您的 JPA spring 配置 XML 文件中使用这样的属性:

<bean id="myEmf" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
      <property name="dataSource" ref="dataSource" />
      <property name="packagesToScan" value="com.example.persistence.model" />
      <property name="jpaVendorAdapter">
         <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter" />
      </property>
      <property name="jpaProperties">
         <props>
            <prop key="hibernate.hbm2ddl.auto">create-drop</prop>
            <prop key="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</prop>
            <prop key="javax.persistence.sharedCache.mode">ENABLE_SELECTIVE</prop>
         </props>
      </property>
</bean>

我还没有测试过,但 IMO 这是正确的方法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-05-22
    • 2015-11-05
    • 1970-01-01
    • 2021-10-07
    • 1970-01-01
    • 2021-12-21
    • 1970-01-01
    • 2017-05-22
    相关资源
    最近更新 更多