JPA ローダーの構成

Java Persistence API (JPA) ローダーは、JPA を使用してデータベースと対話するプラグイン実装です。

始める前に

このタスクについて

Java Persistence API (JPA) Loader の機能について詳しくは、JPA ローダーを参照してください。

手順

  1. データベースと対話するために JPA が必要とする必須パラメーターを構成します。

    次のパラメーターが必要です。 これらのパラメーターは、JPALoader または JPAEntityLoader Bean、および JPATxCallback Bean 内で構成されます。

    • persistenceUnitName: パーシスタンス・ユニット名を指定します。 このパラメーターは、JPA EntityManagerFactory の作成、および persistence.xml ファイル内の JPA エンティティー・メタデータの検索という 2 つの目的のために必要です。 この属性は、JPATxCallback に設定されます。
    • JPAPropertyFactory: パーシスタンス・プロパティー・マップを作成し、デフォルトのパーシスタンス・プロパティーをオーバーライドするためのファクトリーを指定します。 この属性は、JPATxCallback に設定されます。この属性を設定するために、 Spring スタイルの構成が必要です。
    • entityClassName: JPA メソッド (EntityManager.persistEntityManager.find など) を使用する場合に必要なエンティティー・クラス名を指定します。 JPALoader にはこのパラメーターが必要ですが、JPAEntityLoader ではこのパラメーターはオプションです。 JPAEntityLoader プラグインの場合、entityClassName パラメーターが構成されていないと、ObjectGrid エンティティー・マップに構成されているエンティティー・クラスが使用されます。 eXtreme Scale EntityManager と JPA プロバイダーに同じクラスを使用する必要があります。この属性は、JPALoader または JPAEntityLoader に設定されます。
    • preloadPartition: マップ・プリロードが開始される区画を指定します。 プリロード区画がゼロより小さいか、または「区画総数マイナス 1」よりも大きい場合、マップ・プリロードは開始されません。 デフォルト値は -1 ですから、デフォルトではプリロードは開始されません。 この属性は、JPALoader または JPAEntityLoader に設定されます。

    この 4 つの JPA パラメーターが eXtreme Scale に構成されるほか、JPA エンティティーからキーを取得するため、JPA メタデータが使用されます。JPA メタデータは、アノテーションとして構成するか、 persistence.xml ファイル内に指定される orm.xml ファイルとして構成できます。 これは、eXtreme Scale 構成には含まれません。

  2. JPA 構成用に XML ファイルを構成します。

    JPALoader または JPAEntityLoader を構成する場合は、データベースとの通信のためのプラグインを参照してください。

    ローダー構成と一緒に、JPATxCallback トランザクション・コールバックを構成します。 以下に、JPAEntityLoaderJPATxCallback が構成されている ObjectGrid XML 記述子ファイル (objectgrid.xml) の例を示します。

    コールバックを含むローダーの構成 - XML の例
    <?xml version="1.0" encoding="UTF-8"?>
    <objectGridConfig xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    	xsi:schemaLocation="http://ibm.com/ws/objectgrid/config ../objectGrid.xsd"
    	xmlns="http://ibm.com/ws/objectgrid/config">
        <objectGrids>
          <objectGrid name="JPAEM" entityMetadataXMLFile="jpaEMD.xml">
            <bean id="TransactionCallback" 
               className="com.ibm.websphere.objectgrid.jpa.JPATxCallback">
               <property 
                  name="persistenceUnitName" 
                  type="java.lang.String"  
                  value="employeeEMPU" />
           </bean>
           <backingMap name="Employee" pluginCollectionRef="Employee" />
        </objectGrid>
      </objectGrids>
    
      <backingMapPluginCollections>
        <backingMapPluginCollection id="Employee">
            <bean id="Loader"
              className="com.ibm.websphere.objectgrid.jpa.JPAEntityLoader">
    	      <property 
                   name="entityClassName" 
                   type="java.lang.String"  
                   value="com.ibm.ws.objectgrid.jpa.test.entity.Employee"/>
            </bean>
        </backingMapPluginCollection>
      </backingMapPluginCollections>
    </objectGridConfig>

    JPAPropertyFactory を構成する場合は、Spring スタイルの構成を使用する必要があります。 以下に示すのは、Spring Bean が eXtreme Scale 構成に使用されるように構成している XML 構成ファイル・サンプル例 ( JPAEM_spring.xml) です。

    JPA プロパティー・ファクトリーを含むローダーの構成 - XML の例
    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xmlns:aop="http://www.springframework.org/schema/aop"
           xmlns:tx="http://www.springframework.org/schema/tx"
           xmlns:objectgrid="http://www.ibm.com/schema/objectgrid"
           xsi:schemaLocation="http://www.springframework.org/schema/beans 
               http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">
    
      <objectgrid:JPAEntityLoader id="jpaLoader" 
    		entityClassName="com.ibm.ws.objectgrid.jpa.test.entity.Employee"/>
      <objectgrid:JPATxCallback id="jpaTxCallback" persistenceUnitName="employeeEMPU" />
    </beans>

    次に Objectgrid.xml 構成 XML ファイルを示します。 ObjectGrid の名前は JPAEM であり、これは、JPAEM_spring.xml Spring 構成ファイルの ObjectGrid 名に一致しています。

    JPAEM ローダー構成 - XML の例
    <?xml version="1.0" encoding="UTF-8"?>
    <objectGridConfig xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="http://ibm.com/ws/objectgrid/config ../objectGrid.xsd"
     xmlns="http://ibm.com/ws/objectgrid/config">
      <objectGrids>
        <objectGrid name="JPAEM" entityMetadataXMLFile="jpaEMD.xml">
          <bean id="TransactionCallback" 
                className="{spring}jpaTxCallback"/>
            <backingMap name="Employee" pluginCollectionRef="Employee" 
                        writeBehind="T4"/>
          </objectGrid>
      </objectGrids>
        
      <backingMapPluginCollections>
        <backingMapPluginCollection id="Employee">
           <bean id="Loader" className="{spring}jpaLoader" />
        </backingMapPluginCollection>
      </backingMapPluginCollections>
    </objectGridConfig>

    エンティティーには、JPA アノテーションおよび eXtreme Scale エンティティー・マネージャー・アノテーションの両方でアノテーションを付けることができます。 各アノテーションには、使用可能な等価 XML があります。そのため、eXtreme Scale は Spring 名前空間を追加しています。 この Spring 名前空間サポートを使用してこれらを構成することもできます。詳しくは、Spring Framework の概要を参照してください。