16

EHCache を使用するように純粋な休止状態を構成する方法をいくつか見つけました。しかし、キャッシュを使用するように JPA2.0 EntityManager を構成する方法の説明が見つかりません。Hibernate 3.5.2 は、私の JPA2.0 プロバイダーです。

edit//@Cacheable(true)エンティティには十分ですか? または@org.hibernate.annotations.Cache、エンティティの構成に使用する必要がありますか?

4

2 に答える 2

30

EHCache を使用するように純粋な休止状態を構成する方法をいくつか見つけました。しかし、キャッシュを使用するように JPA2.0 EntityManager を構成する方法の説明が見つかりません。Hibernate 3.5.2 は、私の JPA2.0 プロバイダーです。

JPA を使用して L2 キャッシュ プロバイダーを構成する方法は、生の Hibernate と似ています。

デフォルトでは、Hibernate 3.5 には EhCache 1.5 が同梱されており (「Ehcache をセカンド レベル キャッシュとして構成する」を参照)、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 を使用する場合は、新しいHibernate 3.3/3.5 SPIをサポートする EhCache が提供するプロバイダを使用する必要がありますCacheRegionFactory)。使用する:

<!-- 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 キャッシュのセットアップ用です。

エンティティには @Cacheable(true) で十分ですか? または、 @org.hibernate.annotations.Cache を使用してエンティティを構成する必要がありますか?

理論的には、は Hibernate 独自のアノテーションの代わりとなるものであり、要素@Cacheableと組み合わせて使用​​する必要があります。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>

しかし、この前の質問で述べたように、最初の実験は成功していません ( HHH-5303に関連している可能性があります。あまり調査していないとは言えません)。したがって、独自の注釈を使用することをお勧めします。

参考文献

  • Hibernate EntityManager リファレンス ガイド
  • JPA 2.0 仕様
    • 3.7.1項「shared-cache-mode要素」
    • 11.1.7項「キャッシュ可能な注釈」

資力

関連する質問

于 2010-09-09T10:05:32.457 に答える
3

persistence.xmlでは、次のプロパティを指定できます。

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

そしてそれをアクティブにするために:

<property name="hibernate.cache.use_second_level_cache" value="true" />
于 2010-09-09T07:57:05.410 に答える