在hibernate中配置共享缓存模式
Posted
技术标签:
【中文标题】在hibernate中配置共享缓存模式【英文标题】:Configure shared cache mode in 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 中的任何其他选项
【参考方案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 这是正确的方法。
【讨论】:
以上是关于在hibernate中配置共享缓存模式的主要内容,如果未能解决你的问题,请参考以下文章