gpt4 book ai didi

hibernate - 如何配置 JPA 2.0 和 Hibernate 3.5.2 以使用 EHCache 作为二级缓存和查询缓存?

转载 作者:行者123 更新时间:2023-12-02 19:12:46 26 4
gpt4 key购买 nike

我找到了一些如何配置纯 hibernate 以使用 EHCache 的说明。但我找不到任何有关如何配置 JPA2.0 EntityManager 以使用缓存的说明。 Hibernate 3.5.2 是我的 JPA2.0 提供程序。

编辑//@Cacheable(true) 对于实体​​来说足够了吗?或者我应该使用 @org.hibernate.annotations.Cache 来配置实体?

最佳答案

I found some instructions how to configure pure hibernate to use EHCache. But I can't find any instructions how to configure JPA2.0 EntityManager to use cache. Hibernate 3.5.2 is my JPA2.0 provider.

使用 JPA 配置 L2 缓存提供程序的方式与原始 Hibernate 类似。

默认情况下,Hibernate 3.5 附带 EhCache 1.5(请参阅 Configure Ehcache as a Second Level Cache ),如果您想使用 Hibernate 提供的官方缓存提供程序(在 hibernate-ehcache 中)如果您使用 Maven),请声明:

<!-- This is the provider for Ehcache provided by Hibernate, using the "old" SPI -->
<property name="hibernate.cache.provider_class" value="org.hibernate.cache.EhCacheProvider"/>

如果您想使用 EhCache 2.x,则需要使用 EhCache 提供的提供程序,该提供程序通过其 CacheRegionFactory 支持 Hibernate 3.3/3.5 SPI )。使用:

<!-- The region factory property is the "new" property (for Hibernate 3.3 and above) -->
<property name="hibernate.cache.region.factory_class" value="net.sf.ehcache.hibernate.EhCacheRegionFactory">

例如创建实例,或

<property name="hibernate.cache.region.factory_class" value="net.sf.ehcache.hibernate.SingletonEhCacheRegionFactory"/>

强制 Hibernate 使用 Ehcache CacheManager 的单例。

然后激活L2缓存和查询缓存:

<property name="hibernate.cache.use_second_level_cache" value="true"/>
<property name="hibernate.cache.use_query_cache" value="true"/>

这是用于 Hibernate L2 缓存设置的。

Is @Cacheable(true) enough for entity? Or should I use @org.hibernate.annotations.Cache to configure the entity?

理论上,@Cacheable 应该是 Hibernate 专有注释的替代品,并且应该与 shared-cache-mode 元素结合使用:

<persistence xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd" version="2.0">
<persistence-unit name="FooPu" transaction-type="RESOURCE_LOCAL">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
...
<shared-cache-mode>ENABLE_SELECTIVE</shared-cache-mode>
<properties>
...
</properties>
</persistence-unit>
</persistence>

但正如 this previous question 中提到的,初步实验并没有成功(可能与 HHH-5303 有关,我不能说,我没有调查那么多)。所以我建议坚持使用专有注释。

引用文献

  • Hibernate EntityManager 引用指南
  • JPA 2.0 规范
    • 第 3.7.1 节“共享缓存模式元素”
    • 第 11.1.7 节“可缓存注释”

资源

相关问题

关于hibernate - 如何配置 JPA 2.0 和 Hibernate 3.5.2 以使用 EHCache 作为二级缓存和查询缓存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3674697/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com