本製品では、以下の永続性プロバイダを使用できます。
Interstage永続性プロバイダ
その他のJPA規約に準拠する永続性プロバイダ
使用する永続性プロバイダは、deployment descriptor (persistence.xml)に定義します。
Interstage永続性プロバイダ
Interstage永続性プロバイダを使用する場合、deployment descriptor (persistence.xml)の<provider>タグを記述しないでください。また、<provider>タグに相当する永続性ユニットプロパティをjavax.persistence.PersistenceのcreateEntityManagerFactory(String, Map)メソッドに指定しないでください。
Java SE環境で使用する場合、以下のモジュールをクラスパスに追加してください。
C:\Interstage\F3FMisje7\glassfish\modules\org.eclipse.persistence.jpa.jar
/opt/FJSVisje7/glassfish/modules/org.eclipse.persistence.jpa.jar
Java EE環境(Web、EJBまたはアプリケーションクライアントコンテナ)で使用する場合、上記モジュールは自動的にクラスパスに設定されるので追加する必要はありません。
なお、Java SEスタンドアロンアプリケーションにおいて、1:1または多:1のrelationshipでFetchType.LAZYによりデータをデータベースからロードする場合、static weaving機能を利用してください。
以下の手順でstatic weaving機能を利用してください。
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 |
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)メソッドにプロバイダクラス名を指定します。
その他の永続性プロバイダの利用については、動作を保証できません。問題が発生した場合は、永続性プロバイダ提供元に問い合わせてください。
永続性プロバイダのクラスは、利用するスコープによりアプリケーションのモジュールのクラスパスに追加してください。Java EEアプリケーションクライアントのクラスパス設定方法については、「4.9.1 Java 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>