3.2.2.10. Infinispan による JPA/Hibernate 2 次キャッシュの置き換え

概要

2 次キャッシュ (2LC) に関し、 JBoss Cache は Infinispan に置き換えられました。これにより、persistence.xml ファイルの変更が必要になります。使用する 2 次キャッシュが JPA または Hibernate であるかによって、構文は若干異なります。ここで取り上げる例は Hibernate の使用が前提となっています。

以下は JBoss Enterprise Application Platform 5.x の persistence.xml ファイルで 2 次キャッシュのプロパティーを設定する例になります。
<property name="hibernate.cache.region.factory_class"
     value="org.hibernate.cache.jbc2.JndiMultiplexedJBossCacheRegionFactory"/>
<property name="hibernate.cache.region.jbc2.cachefactory" value="java:CacheManager"/>
<property name="hibernate.cache.use_second_level_cache" value="true"/>
<property name="hibernate.cache.region.jbc2.cfg.entity" value="mvcc-entity"/>
<property name="hibernate.cache.region_prefix" value="services"/>
次の手順ではこの例を用いて JBoss Enterprise Application Platform 6 で Infinispan を設定します。

手順3.17 Infinispan を使用するよう persistence.xml ファイルを変更する

  1. JBoss Enterprise Application Platform 6 の JPA アプリケーション向けに Infinispan を設定する

    JBoss Enterprise Application Platform 6 で Infinispan を使用し、プロパティーを指定して JPA アプリケーションに対して同じ設定を行う方法は次の通りです。
    <property name="hibernate.cache.use_second_level_cache" value="true"/>
    
    さらに、次のように ENABLE_SELECTIVE または ALL を値として shared-cache-mode を指定する必要があります。
    • デフォルトは ENABLE_SELECTIVE で、これが推奨値となります。この場合、エンティティーは明示的にキャッシュ可能であるとマークされない限りキャッシュされません。
      <shared-cache-mode>ENABLE_SELECTIVE</shared-cache-mode>
      
    • ALL の場合、キャッシュ不可能であるとマークされていてもエンティティーは常にキャッシュされます。
      <shared-cache-mode>ALL</shared-cache-mode>
      
  2. JBoss Enterprise Application Platform 6 のネイティブ Hibernate アプリケーションに対して Infinispan を設定する

    JBoss Enterprise Application Platform 6 で Infinispan を使用し、ネイティブ Hibernate アプリケーションに対して同じ設定を指定する方法は次の通りです。
    <property name="hibernate.cache.region.factory_class"
         value="org.jboss.as.jpa.hibernate4.infinispan.InfinispanRegionFactory"/>
    <property name="hibernate.cache.infinispan.cachemanager"
         value="java:jboss/infinispan/container/hibernate"/>     
    <property name="hibernate.transaction.manager_lookup_class"
         value="org.hibernate.transaction.JBossTransactionManagerLookup"/>
    <property name="hibernate.cache.use_second_level_cache" value="true"/>
    
    
    また、次の依存関係を MANIFEST.MF ファイルに追加する必要があります。
    Manifest-Version: 1.0
    Dependencies: org.infinispan, org.hibernate
    
Hibernate のキャッシュプロパティーに関する詳細は 「Hibernate キャッシュプロパティー」 を参照してください。