12.2.1 persistence.xmlの詳細
- 〈この項の構成〉
(1) <persistence>
永続化ユニットの定義を開始することを示すルートタグです。
<persistence>タグには,XML名前空間を指定するxmlns要素を設定する必要があります。
指定できる属性を次の表に示します。
属性名 |
型 |
任意/必須 |
説明 |
---|---|---|---|
version |
persistence:versionType |
必須 |
XMLスキーマのバージョン"1.0"を指定します。 |
(2) <persistence-unit>
永続化ユニットを定義します。指定できる属性を次の表に示します。
属性名 |
型 |
任意/必須 |
説明 |
---|---|---|---|
name |
xsd:string |
必須 |
永続化ユニットの名前を指定します。 name属性で指定する名前は,永続化ユニットがパッケージングされる範囲内で一意な名前である必要があります。 重複した名前の永続化ユニットが定義された場合は,CJPAプロバイダでは動作は保証しません。 Java EE環境で同名の永続化ユニットを定義した場合,コンテナ側で警告メッセージを出力します。 Java EE環境では,name属性に指定する値は,空文字であってはなりません。空文字を指定した場合には,コンテナ側で例外が発生します。 |
transaction-type |
persistence:persistence-unit-transaction-type |
任意 |
EntityManagerが使用するトランザクションを指定します。
transaction-type属性の値を指定しなかった場合は,デフォルトである「JTA」が適用されます。 Java EE環境で指定できる属性の詳細については,マニュアル「アプリケーションサーバ 機能解説 基本・開発編(コンテナ共通機能)」の「5.8.1 <persistence-unit>タグに指定する属性」を参照してください。 |
(3) <description>
永続化ユニットに関する説明を記述します。
(4) <provider>
javax.persistence.spi.PersistenceProviderの実装クラス名を指定します。
CJPAプロバイダを使用する場合,com.hitachi.software.jpa.PersistenceProviderを指定します。ほかのJPAプロバイダが存在する場合など,明示的に指定する場合に記述します。なお,値を指定しない場合は,コンテナの挙動に依存します。
- 注意事項
-
<provider>タグの途中に空白が入ると,要素を指定していない場合と同じ処理をします。
(5) <jta-data-source>
JTAトランザクションに対応したデータソースの参照を指定します。
<persistence-unit>タグのtransaction-typeに指定した値がJTAの場合に指定します。なお,値を指定しない場合は,コンテナの挙動に依存します。
(6) <non-jta-data-source>
JTAトランザクションには対応していないデータソースの参照を指定します。<persistence-unit>タグのtransaction-typeに指定した値がRESOURCE_LOCALの場合に指定します。
transaction-typeに指定した値がJTAの場合,CJPAプロバイダでは<non-jta-data-source>タグに値が指定されても無視します。値を指定しない場合は,コンテナの挙動に依存します。
(7) <mapping-file>
O/Rマッピングファイルを指定します。
指定したファイルはクラスパスで指定している場所に格納されている必要があります。O/Rマッピングファイルを使用しない場合,または,orm.xmlを所定の位置に配置して使用する場合は,記述する必要はありません。
指定したファイルが見つからない場合,アプリケーション開始に失敗します。
(8) <jar-file>
entityクラス,embeddableクラス,mappedsuperクラスを含むJARファイル名を記述します。JARファイルのパスは,永続化ユニットのルートから相対パスで指定します。
指定したファイルが見つからない場合,コンテナの挙動に依存します。
(9) <class>
entityクラス,embeddableクラス,およびmappedsuperクラスを記述します。
指定したクラスが見つからない場合,コンテナの挙動に依存します。
なお,<class>タグに指定された値がentityクラス,embeddableクラス,およびmappedsuperクラスであるかどうかのチェックはCJPAプロバイダでは実施しません。そのため,entityクラス,embeddableクラス,およびmappedsuperクラス以外のクラスを指定した場合に例外は発生しないで,動作します。
(10) <exclude-unlisted-classes>
Persistenceクラスを定義します。
指定できる値と,値を指定した場合の挙動を次に示します。
- true
-
class要素,jar-file要素,およびmapping-file要素によって明示的に指定されたクラスだけPersistenceクラスとして扱います。
- false
-
exclude-unlisted-class要素を指定していない場合,永続化ユニットのルート以下のclassファイルに対してJPA対象のクラスであるかどうかを検索します。
(11) <properties>
CJPAプロバイダ独自のプロパティを定義します。この要素以下にproperty要素を指定してプロパティを定義します。
(12) <property>
各種のプロパティを定義します。
プロパティの詳細については,「12.2.2 <property>タグに指定できるCJPAプロバイダ独自のプロパティ」を参照してください。
指定できる属性を次の表に示します。
属性名 |
型 |
任意/必須 |
説明 |
---|---|---|---|
name |
xsd:string |
必須 |
プロパティの名前。 |
value |
xsd:string |
必須 |
プロパティの値。 |