8.10.2 javax.persistence.EntityManagerFactoryインタフェース
ここでは,javax.persistence.EntityManagerFactoryインタフェースについてインタフェース定義と注事事項を説明します。
- 〈この項の構成〉
(1) インタフェース定義
package javax.persistence; /** * EntityManagerFactoryインタフェースは, * アプリケーションがアプリケーション管理のEntityManagerを取得するために * 使用します。 * アプリケーションがEntityManagerFactoryの使用を終了する時には, * アプリケーションはEntityManagerFactoryをクローズする必要があります。 * EntityManagerFactoryがクローズされたあとは, * EntityManagerFactoryから作成したすべてのEntityManagerはクローズされた * ものとして扱われます。 */ public interface EntityManagerFactory { /** * 新しいEntityManagerを作成します。 * このメソッドは,呼び出されるたびに新しいEntityManagerのインスタンスを * 返します。 * このメソッドが返すEntityManagerのisOpenメソッドはtrueを返します。 * @return 新しいEntityManager */ public EntityManager createEntityManager(); /** * 指定したプロパティのマップを使用して新しいEntityManagerを作成します。 * このメソッドは,呼び出されるたびに新しいEntityManagerのインスタンスを * 返します。 * このメソッドが返すEntityManagerのisOpenメソッドはtrueを返します。 * @param map EntityManagerのプロパティを格納したMap * @return 新しいEntityManager */ public EntityManager createEntityManager(Map map); /** * ファクトリをクローズし,ファクトリが保持しているすべてのリソースを * 解放します。 * ファクトリがクローズされたあとは,isOpen以外のメソッドを呼び出すと, * IllegalStateExceptionがスローされます。isOpenメソッドは,falseを * 返します。 * EntityManagerFactoryがクローズされると,ファクトリから作成した * すべてのEntityManagerも,クローズされたものとして扱われます。 */ public void close(); /** * ファクトリがオープンしているかどうかを返します。 * @return ファクトリがクローズされるまではtrue */ public boolean isOpen(); }
(2) 注意事項
-
createEntityManagerに渡すマップには,JPAプロバイダのベンダ特有プロパティを含めることができます。JPAプロバイダが認識できないプロパティは,単に無視されます。
-
EJB仕様では,Stateless Session BeanでEntityManagerFactoryのメソッドを呼び出せるのは,次のメソッドです。
-
ライフサイクルコールバックメソッド(PostConstructやPreDestroy)
-
ビジネスインタフェースまたはコンポーネントインタフェースのビジネスメソッド
-
ビジネスメソッド
-
インターセプタメソッド
-
タイムアウトコールバックメソッドです。
コンストラクタや,DIのセッターメソッド(setSessionContextメソッドを含む)では,EntityManagerFactoryのメソッドを呼び出せません。
-
-
EJB仕様では,Stateful Session BeanでEntityManagerFactoryのメソッドを呼び出せるのは,次のメソッドです。
-
ライフサイクルコールバックメソッド(PostConstructやPreDestroy)
-
ビジネスインタフェースまたはコンポーネントインタフェースのビジネスメソッド
-
ビジネスメソッド
-
インターセプタメソッド
-
SessionSynchronizationのafterBeginおよびbeforeCompletionメソッドです。
コンストラクタや,Dependency Injectionのセッターメソッド,SessionSynchronizationのafterCompletionメソッドでは,EntityManagerFactoryのメソッドを呼び出せません。
-