Hitachi

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


5.7.3 DDによる@PersistenceUnit定義のオーバーライド

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

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

〈この項の構成〉

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

DDの<persistence-unit-name>は@PersistenceUnitのunitName属性をオーバーライドします。通常,永続化ユニット名を変更すると,アプリケーションは動作しなくなるので,変更には注意が必要です。

(2) <injection-target>タグ

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