Cosminexus V9 アプリケーションサーバ 機能解説 基本・開発編(コンテナ共通機能)

[目次][用語][索引][前へ][次へ]

5.6.3 DDによる@PersistenceContext定義のオーバーライド

@PersistenceContextをアプリケーションに記載している場合に,DDで<persistence-context-ref>タグを定義していると,アノテーションで定義した内容はDDで定義した内容で上書きされます。この場合,アノテーションとDDとの対応は,@PersistenceContextのname属性と,DDの<persistence-context-ref>タグ下にある<persistence-context-ref-name>タグの対応で判断されます。なお,@PersistenceContextでname属性が明示的に指定されていない場合でも,name属性にはデフォルト値が存在するので注意が必要です。

次に@PersistenceContextに指定した属性がDDのタグでオーバーライドされるときの注意について説明します。

<この項の構成>
(1) <persistence-unit-name>タグとunitName属性
(2) <persistence-context-type>タグとtype属性
(3) <persistence-property>タグとproperties属性
(4) <injection-target>タグ

(1) <persistence-unit-name>タグとunitName属性

DDの<persistence-unit-name>タグは@PersistenceContextのunitName属性をオーバーライドします。通常,永続化ユニット名を変更すると,アプリケーションは動作しなくなるので,DDおよびアノテーションを定義する際には注意してください。

(2) <persistence-context-type>タグとtype属性

DDの<persistence-context-type>タグは@PersistenceContextのtype属性をオーバーライドします。通常,永続化コンテキストのライフサイクルの種類を変更すると,アプリケーションは動作しなくなるので,DDおよびアノテーションを定義する際には注意してください。

(3) <persistence-property>タグとproperties属性

DDの<persistence-property>に指定されたプロパティは,@PersistenceContexのproperties属性に指定されたプロパティに追加されます。ただし,プロパティ名が同じ場合には,プロパティ値がオーバーライドされます。

(4) <injection-target>タグ

インジェクションターゲットをオーバーライドすることはできません。なお,DDに<injection-target>タグを記述する場合には,@PersistenceContexが付加されたフィールドやメソッドを正確に指定してください。