ページの先頭行へ戻る
Interstage Application Server V13.0.0 GlassFish 設計・構築・運用ガイド
FUJITSU Software

2.11.2 永続性プロバイダの設定方法

本製品では、以下の永続性プロバイダを使用できます。

使用する永続性プロバイダは、deployment descriptor (persistence.xml)に定義します。

Interstage永続性プロバイダ

Interstage永続性プロバイダを使用する場合、deployment descriptor (persistence.xml)の<provider>タグを記述しないでください。また、<provider>タグに相当する永続性ユニットプロパティをjavax.persistence.PersistenceのcreateEntityManagerFactory(String, Map)メソッドに指定しないでください。

Java SE環境で使用する場合、以下のモジュールをクラスパスに追加してください。

C:\Interstage\glassfish5\glassfish\modules\org.eclipse.persistence.jpa.jar
/opt/FJSViaps/glassfish5/glassfish/modules/org.eclipse.persistence.jpa.jar

GlassFish環境(Web、EJBまたはアプリケーションクライアントコンテナ)で使用する場合、上記モジュールは自動的にクラスパスに設定されるので追加する必要はありません。

なお、Java SEスタンドアロンアプリケーションにおいて、1:1または多:1のrelationshipでFetchType.LAZYによりデータをデータベースからロードする場合、static weaving機能を利用してください。

以下の手順でstatic weaving機能を利用してください。

  1. Static Weaverの実行

    以下のコマンドでStatic Weaverを実行してください。

    java org.eclipse.persistence.tools.weaving.jpa.StaticWeave [arguments] <source> <target>

    Static Weaverの実行例

    java org.eclipse.persistence.tools.weaving.jpa.StaticWeave -persistenceinfo C:\myjar-containing-persistencexml.jar -classpath C:\classpath1;C:\classpath2 C:\myjar-source.jar C:\myjar-target.jar

  2. eclipselink.weaving属性の設定

    persistence.xmlにeclipselink.weaving属性にstaticを設定してください。

    eclipselink.weaving属性の設定例

      <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="com.company.my.pu">
           ~ 省略 ~
          <properties>
            <property name="eclipselink.weaving" value="static"/>
          </properties>
        </persistence-unit>
      </persistence>

注意

Interstage永続性プロバイダの注意事項

JPAが返却する例外には、例外のcauseとして、org.eclipse.persistenceで始まる例外をスローする場合があります。org.eclipse.persistenceで始まる例外クラスは、クラスパスに設定する上記モジュールに含まれています。このため、Java SEスタンドアロンアプリケーションからJPAを使用するEJBアプリケーションを呼び出す場合、JPAで発生した例外をJava SEスタンドアロンアプリケーションに返却する場合でも上記のクラスパスの設定が必要です。

クラスパスを設定しない場合、返却された例外をIIOP通信層で復元できずにIOP00810257のエラーが発生する場合があります。

その他の永続性プロバイダ

その他の永続性プロバイダを使用する場合、deployment descriptor (persistence.xml)の<provider>タグに永続性プロバイダのプロバイダクラス名を定義します。または、javax.persistence.PersistenceのcreateEntityManagerFactory(String, Map)メソッドにプロバイダクラス名を指定します。
その他の永続性プロバイダの利用については、動作を保証できません。問題が発生した場合は、永続性プロバイダ提供元に問い合わせてください。
永続性プロバイダのクラスは、利用するスコープによりアプリケーションのモジュールのクラスパスに追加してください。Jakarta EEアプリケーションクライアントのクラスパス設定方法については、「4.9.1 Jakarta EEアプリケーションクライアントの環境設定」を参照してください。

永続性プロバイダのプロバイダクラス名とクラスパスに必要なクラスまたはJarモジュールについては、その永続性プロバイダのマニュアルを参照してください。

その他の永続性プロバイダの定義例

  <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="com.company.my.pu">
      <provider>com.example.jpa.PersistenceProviderImpl</provider>
      <jta-data-source>jdbc/myDatasource</jta-data-source>
    </persistence-unit>
  </persistence>