Hitachi

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


5.3.3 CDI Managed BeanでのJPA利用

11-10以降では,EJBやWebコンポーネントに注入されるCDI Managed BeanでのJPAの利用をサポートします。ただし,シングルトンセッションビーンに注入されるCDI Managed BeanでのJPAの利用はサポートしません。

サポート範囲を次の表に示します。

EntityManagerFactory/EntityManagerの取得方法

11-10

11-20以降(ejbserver.jpa.cdiEnabledがfalse)

11-20以降(ejbserver.jpa.cdiEnabledがtrue)

EntityManagerFactory

javax.persistence.Persistenceインタフェースの使用

DDによる参照の定義

EJB(ejb-jar.xml)

×

×

×

Webコンポーネント(web.xml)

@PersistenceUnitによる注入

×

×

EntityManager

DDによる参照の定義

EJB(ejb-jar.xml)

×

×

×

Webコンポーネント(web.xml)

@PersistenceContextによる注入

×

×

(凡例)○:使用できる △:一部使用できる ×:使用できない

サポート範囲の詳細を次に示します。

〈この項の構成〉

(1) javax.persistence.Persistenceインタフェースの使用

javax.persistence.Persistenceインタフェースを利用して,EntityManagerFactoryを取得できます。

(2) DDによる参照の定義

(3) @PersistenceUnitや@PersistenceContextによる注入

11-10以前では,CDI Managed Bean(それに関連づくインターセプタ含む)で@PersistenceUnitや@PersistenceContextでの定義はできません。

11-20以降では,ejbserver.jpa.cdiEnabledプロパティがtrue(デフォルトでtrue)の場合,CDI Managed Bean(それに関連づくインターセプタ含む)で@PersistenceUnitや@PersistenceContextでの定義ができます。

(a) 指定できる永続化ユニット

@PersistenceUnitや@PersistenceContextのunitName属性で指定できる永続化ユニットは,CDI Managed Beanが含まれるモジュールによって次のように分かれます。なお,どの永続化ユニットが使用されるかは「5.10.2 永続化ユニット名の参照スコープ」のルールが適用されます。

  • WAR内のCDI Managed Bean

    unitName属性で次の永続化ユニットを指定できます。それ以外の永続化ユニットを指定した場合,EntityManagerFactoryやEntityManagerは注入されません。

    • そのCDI Managed Beanを含むWARに定義した永続化ユニット

    • EARに定義した永続化ユニット

  • EJB-JAR内のCDI Managed Bean

    unitName属性で次の永続化ユニットを指定できます。それ以外の永続化ユニットを指定した場合,EntityManagerFactoryやEntityManagerは注入されません。

    • そのCDI Managed Beanを含むEJB-JARに定義した永続化ユニット

    • EARに定義した永続化ユニット

  • ライブラリJAR内のCDI Managed Bean

    unitName属性で次の永続化ユニットを指定できます。それ以外の永続化ユニットを指定した場合,EntityManagerFactoryやEntityManagerは注入されません。

    • EARに定義した永続化ユニット

(4) 注意事項