クラス AbstractEntityManagerFactoryBean
- 実装されているすべてのインターフェース:
SerializableSE、Aware、BeanClassLoaderAware、BeanFactoryAware、BeanNameAware、DisposableBean、FactoryBean<EntityManagerFactoryEE>、InitializingBean、PersistenceExceptionTranslator、EntityManagerFactoryInfo
EntityManagerFactoryEE インスタンスを作成する抽象 FactoryBean。さまざまな JPA ブートストラップ契約(スタンドアロンおよびコンテナー)間の共通機能をカプセル化します。
標準の JPA 構成規則と Spring のカスタマイズ可能な JpaVendorAdapter メカニズムのサポートを実装し、EntityManagerFactory のライフサイクルを制御します。
このクラスは、Spring の PersistenceExceptionTranslationPostProcessor によって自動検出される PersistenceExceptionTranslator インターフェースも実装し、ネイティブ例外を Spring DataAccessExceptions に AOP ベースで変換します。たとえば LocalEntityManagerFactoryBean は、PersistenceExceptionTranslationPostProcessor が自動的に JPA 例外を変換できるようにします。
- 導入:
- 2.0
- 作成者:
- Juergen Hoeller, Rod Johnson
- 関連事項:
フィールドのサマリー
フィールドインターフェース org.springframework.beans.factory.FactoryBean から継承されたフィールド
OBJECT_TYPE_ATTRIBUTEコンストラクターの概要
コンストラクターメソッドのサマリー
修飾子と型メソッド説明voidprotected EntityManagerFactoryEE指定されたEntityManagerFactoryEE のプロキシを作成します。createNativeEntityManager(MapSE<?, ?> properties) アプリケーションレベルの EntityManager ハンドルの背後にあるフレームワーク管理リソースとして使用されるネイティブ JPA EntityManager を作成します。protected abstract EntityManagerFactoryEEサブクラスは、このメソッドを実装して、getObject()メソッドによって返される EntityManagerFactory を作成する必要があります。voiddestroy()Bean 提供時のシャットダウンで EntityManagerFactory を閉じます。アプリケーションの Bean がロードされる ClassLoader を返します。バックグラウンドブートストラップの非同期エグゼキューターを返します(ある場合)。この EntityManagerFactory が JDBC 接続を取得する JDBC DataSource を返します。ClassSE<? extends EntityManagerEE>このファクトリの EntityManagers が実装する(潜在的にベンダー固有の)EntityManager インターフェースを返します。この EntityManagerFactory のベンダー固有の JpaDialect 実装、または不明の場合はnullを返します。特定のエントリを追加またはオーバーライドするオプションを使用して、JPA プロパティへのMapアクセスを永続性プロバイダーに渡すことを許可します。この EntityManagerFactory の JpaVendorAdapter 実装を返します。不明な場合はnullを返します。元の EntityManagerFactory をそのまま返します。シングルトン EntityManagerFactory を返します。ClassSE<? extends EntityManagerFactoryEE>この FactoryBean が作成するオブジェクトの型を返します。事前にわからない場合はnullを返します。基になる EntityManagerFactory の作成に使用された基になる PersistenceProvider を返します。コンテナー内 API が使用された場合、この EntityManagerFactory の作成に使用された PersistenceUnitInfo を返します。この EntityManagerFactory の作成に使用される永続性ユニットの名前を返します。名前のないデフォルトの場合はnullを返します。booleanこのファクトリによって管理されるオブジェクトはシングルトンですか? つまり、FactoryBean.getObject()は常に同じオブジェクト(キャッシュ可能な参照)を返しますか?protected voidpostProcessEntityManager(EntityManagerEE rawEntityManager) アクティブに使用する前にネイティブ EntityManager を後処理するためのオプションのコールバック。voidsetBeanClassLoader(ClassLoaderSE classLoader) Beanclass loaderSE を Bean インスタンスに提供するコールバック。voidsetBeanFactory(BeanFactory beanFactory) 所有ファクトリを Bean インスタンスに提供するコールバック。voidsetBeanName(StringSE name) この Bean を作成した Bean ファクトリで Bean の名前を設定します。voidsetBootstrapExecutor(AsyncTaskExecutor bootstrapExecutor) バックグラウンドブートストラップ用の非同期エグゼキューターを指定します。voidsetEntityManagerFactoryInterface(ClassSE<? extends EntityManagerFactoryEE> emfInterface) この EntityManagerFactory プロキシが実装することになっている(潜在的にベンダー固有の)EntityManagerFactory インターフェースを指定します。voidsetEntityManagerInitializer(ConsumerSE<EntityManagerEE> entityManagerInitializer) 公開されたEntityManagerFactoryによって作成されたすべてのEntityManagerをカスタマイズするためのコールバックを指定します。voidsetEntityManagerInterface(ClassSE<? extends EntityManagerEE> emInterface) このファクトリの EntityManagers が実装することになっている(潜在的にベンダー固有の)EntityManager インターフェースを指定します。voidsetJpaDialect(JpaDialect jpaDialect) この EntityManagerFactory に関連付けるベンダー固有の JpaDialect 実装を指定します。voidsetJpaProperties(PropertiesSE jpaProperties) Persistence.createEntityManagerFactory(存在する場合)に渡される JPA プロパティを指定します。voidsetJpaPropertyMap(MapSE<StringSE, ?> jpaProperties) JPA プロパティをマップとして指定し、Persistence.createEntityManagerFactory(存在する場合)に渡されます。voidsetJpaVendorAdapter(JpaVendorAdapter jpaVendorAdapter) 必要に応じて、目的の JPA プロバイダーの JpaVendorAdapter 実装を指定します。voidsetPersistenceProvider(PersistenceProviderEE persistenceProvider) EntityManagerFactory の作成に使用する PersistenceProvider インスタンスを設定します。voidsetPersistenceProviderClass(ClassSE<? extends PersistenceProviderEE> persistenceProviderClass) EntityManagerFactory の作成に使用する PersistenceProvider 実装クラスを設定します。voidsetPersistenceUnitName(StringSE persistenceUnitName) EntityManagerFactory 構成の名前を指定します。Spring の PersistenceExceptionTranslationPostProcessor によって自動検出される PersistenceExceptionTranslator インターフェースの実装。protected ObjectSE
フィールドの詳細
logger
サブクラスで利用可能なロガー。
コンストラクターの詳細
AbstractEntityManagerFactoryBean
public AbstractEntityManagerFactoryBean()
メソッドの詳細
setPersistenceProviderClass
public void setPersistenceProviderClass(ClassSE<? extends PersistenceProviderEE> persistenceProviderClass) EntityManagerFactory の作成に使用する PersistenceProvider 実装クラスを設定します。指定されていない場合、永続性プロバイダーは JpaVendorAdapter(存在する場合)から取得されるか、スキャンによって(可能な限り)取得されます。setPersistenceProvider
EntityManagerFactory の作成に使用する PersistenceProvider インスタンスを設定します。指定しない場合、永続化プロバイダーは JpaVendorAdapter(存在する場合)から取得されるか、永続化ユニットデプロイ記述子によって(可能な限り)決定されます。getPersistenceProvider
インターフェースからコピーされた説明:EntityManagerFactoryInfo基になる EntityManagerFactory の作成に使用された基になる PersistenceProvider を返します。- 次で指定:
- インターフェース
EntityManagerFactoryInfoのgetPersistenceProvider - 戻り値:
- この EntityManagerFactory の作成に使用された PersistenceProvider、または EntityManagerFactory の構成に標準の JPA プロバイダー自動検出プロセスが使用された場合は
null
setPersistenceUnitName
EntityManagerFactory 構成の名前を指定します。デフォルトは none で、デフォルトの EntityManagerFactory 構成を示します。あいまいな EntityManager 構成が見つかった場合、永続性プロバイダーは例外をスローします。
getPersistenceUnitName
インターフェースからコピーされた説明:EntityManagerFactoryInfoこの EntityManagerFactory の作成に使用される永続性ユニットの名前を返します。名前のないデフォルトの場合はnullを返します。getPersistenceUnitInfo()が null 以外を返す場合、getPersistenceUnitName()の結果はPersistenceUnitInfo.getPersistenceUnitName()によって返される値と等しくなければなりません。setJpaProperties
Persistence.createEntityManagerFactory(存在する場合)に渡される JPA プロパティを指定します。文字列 "value" (PropertiesEditor で解析)または XML Bean 定義の "props" 要素を入力できます。
setJpaPropertyMap
JPA プロパティをマップとして指定し、Persistence.createEntityManagerFactory(存在する場合)に渡されます。XML Bean 定義の「マップ」または "props" 要素を取り込むことができます。
getJpaPropertyMap
特定のエントリを追加またはオーバーライドするオプションを使用して、JPA プロパティへのMapアクセスを永続性プロバイダーに渡すことを許可します。jpaPropertyMap[myKey]などを介してエントリを直接指定する場合に便利です。setEntityManagerFactoryInterface
public void setEntityManagerFactoryInterface(ClassSE<? extends EntityManagerFactoryEE> emfInterface) この EntityManagerFactory プロキシが実装することになっている(潜在的にベンダー固有の)EntityManagerFactory インターフェースを指定します。デフォルトは、特定の JpaVendorAdapter(存在する場合)から取得されるか、標準の
jakarta.persistence.EntityManagerFactoryインターフェースに設定されます。setEntityManagerInterface
このファクトリの EntityManagers が実装することになっている(潜在的にベンダー固有の)EntityManager インターフェースを指定します。デフォルトは、特定の JpaVendorAdapter(存在する場合)から取得されるか、標準の
jakarta.persistence.EntityManagerインターフェースに設定されます。getEntityManagerInterface
インターフェースからコピーされた説明:EntityManagerFactoryInfoこのファクトリの EntityManagers が実装する(潜在的にベンダー固有の)EntityManager インターフェースを返します。nullの戻り値は、自動検出が行われることが想定されていることを示しています。ターゲットEntityManagerインスタンスに基づいているか、単にデフォルトでjakarta.persistence.EntityManagerになっています。- 次で指定:
- インターフェース
EntityManagerFactoryInfoのgetEntityManagerInterface
setJpaDialect
この EntityManagerFactory に関連付けるベンダー固有の JpaDialect 実装を指定します。これは、EntityManagerFactoryInfo インターフェースを介して公開され、JpaDialect 機能を使用することを意図しているアクセサーによってデフォルトのダイアレクトとしてピックアップされます。getJpaDialect
インターフェースからコピーされた説明:EntityManagerFactoryInfoこの EntityManagerFactory のベンダー固有の JpaDialect 実装、または不明の場合はnullを返します。- 次で指定:
- インターフェース
EntityManagerFactoryInfoのgetJpaDialect
setJpaVendorAdapter
必要に応じて、目的の JPA プロバイダーの JpaVendorAdapter 実装を指定します。これにより、この FactoryBean でローカルにオーバーライドされない限り、永続性プロバイダークラスや JpaDialect など、指定されたプロバイダーの適切なデフォルトが初期化されます。getJpaVendorAdapter
この EntityManagerFactory の JpaVendorAdapter 実装を返します。不明な場合はnullを返します。setEntityManagerInitializer
公開されたEntityManagerFactoryによって作成されたすべてのEntityManagerをカスタマイズするためのコールバックを指定します。これは、
JpaVendorAdapter-levelpostProcessEntityManager実装の代替であり、アプリケーションの目的で便利なカスタマイズを可能にします。Hibernate フィルターの設定。setBootstrapExecutor
バックグラウンドブートストラップ用の非同期エグゼキューターを指定します。SimpleAsyncTaskExecutor。次に、
EntityManagerFactoryの初期化がバックグラウンドブートストラップモードに切り替わり、JPA プロバイダーのブートストラップが完了するのを待つのではなく、注入のためにEntityManagerFactoryプロキシがすぐに返されます。ただし、EntityManagerFactoryメソッドへの最初の実際の呼び出しは、JPA プロバイダーのブートストラップが完了するまでブロックされます。最大限のメリットを得るには、メタデータのイントロスペクションの目的であっても、関連する Bean の init メソッドでの初期のEntityManagerFactory呼び出しを避けてください。- 導入:
- 4.3
getBootstrapExecutor
バックグラウンドブートストラップの非同期エグゼキューターを返します(ある場合)。- 導入:
- 4.3
setBeanClassLoader
インターフェースからコピーされた説明:BeanClassLoaderAwareBeanclass loaderSE を Bean インスタンスに提供するコールバック。通常の Bean プロパティの設定後、ただし
InitializingBean'sInitializingBean.afterPropertiesSet()メソッドやカスタム init-method などの初期化コールバックの前に呼び出されます。- 次で指定:
- インターフェース
BeanClassLoaderAwareのsetBeanClassLoader - パラメーター:
classLoader- 所有クラスローダー
getBeanClassLoader
インターフェースからコピーされた説明:EntityManagerFactoryInfoアプリケーションの Bean がロードされる ClassLoader を返します。この ClassLoader でプロキシが生成されます。
- 次で指定:
- インターフェース
EntityManagerFactoryInfoのgetBeanClassLoader
setBeanFactory
インターフェースからコピーされた説明:BeanFactoryAware所有ファクトリを Bean インスタンスに提供するコールバック。通常の Bean プロパティの設定後、ただし
InitializingBean.afterPropertiesSet()またはカスタム init-method などの初期化コールバックの前に呼び出されます。- 次で指定:
- インターフェース
BeanFactoryAwareのsetBeanFactory - パラメーター:
beanFactory- 所有 BeanFactory(非null)。Bean は、ファクトリのメソッドをすぐに呼び出すことができます。- 関連事項:
setBeanName
インターフェースからコピーされた説明:BeanNameAwareこの Bean を作成した Bean ファクトリで Bean の名前を設定します。通常の Bean プロパティの設定後、ただし
InitializingBean.afterPropertiesSet()またはカスタム init メソッドなどの init コールバックの前に呼び出されます。- 次で指定:
- インターフェース
BeanNameAwareのsetBeanName - パラメーター:
name- ファクトリ内の Bean の名前。この名前は、ファクトリで使用される実際の Bean 名であり、最初に指定した名前とは異なる場合があります。特に内部 Bean 名の場合、実際の Bean 名は "#..." サフィックスを追加することで一意になります。必要に応じて、BeanFactoryUtils.originalBeanName(String)メソッドを使用して、元の Bean 名(サフィックスなし)を抽出します。
afterPropertiesSet
インターフェースからコピーされた説明:InitializingBeanすべての Bean プロパティを設定し、BeanFactoryAware、ApplicationContextAwareなどを満たした後、包含BeanFactoryによって呼び出されます。このメソッドにより、Bean インスタンスは、すべての Bean プロパティが設定されたときに、その全体的な構成の検証と最終的な初期化を実行できます。
- 次で指定:
- インターフェース
InitializingBeanのafterPropertiesSet - 例外:
PersistenceExceptionEE
createEntityManagerFactoryProxy
protected EntityManagerFactoryEE createEntityManagerFactoryProxy(@Nullable EntityManagerFactoryEE emf) 指定されたEntityManagerFactoryEE のプロキシを作成します。これは、アプリケーション管理のEntityManagerEE のトランザクション対応プロキシを返すことができるようにするためです。- パラメーター:
emf- 永続化プロバイダーによって返された EntityManagerFactory(すでに初期化されている場合)- 戻り値:
- EntityManagerFactory プロキシ
createNativeEntityManagerFactory
protected abstract EntityManagerFactoryEE createNativeEntityManagerFactory() throws PersistenceExceptionEEサブクラスは、このメソッドを実装して、getObject()メソッドによって返される EntityManagerFactory を作成する必要があります。- 戻り値:
- この FactoryBean によって返される EntityManagerFactory インスタンス
- 例外:
PersistenceExceptionEE- EntityManager を作成できない場合
translateExceptionIfPossible
Spring の PersistenceExceptionTranslationPostProcessor によって自動検出される PersistenceExceptionTranslator インターフェースの実装。可能であれば、ダイアレクトの変換を使用します。そうでない場合、標準の JPA 例外変換にフォールバックします。
- 次で指定:
- インターフェース
PersistenceExceptionTranslatorのtranslateExceptionIfPossible - パラメーター:
ex- 変換する RuntimeException- 戻り値:
- 対応する DataAccessException (または、例外を変換できなかった場合は
null。この場合、実際の永続性の問題ではなく、ユーザーコードが原因である可能性があります。) - 関連事項:
getNativeEntityManagerFactory
インターフェースからコピーされた説明:EntityManagerFactoryInfo元の EntityManagerFactory をそのまま返します。- 次で指定:
- インターフェース
EntityManagerFactoryInfoのgetNativeEntityManagerFactory - 戻り値:
- 飾り気のない EntityManagerFactory (非
null)
createNativeEntityManager
インターフェースからコピーされた説明:EntityManagerFactoryInfoアプリケーションレベルの EntityManager ハンドルの背後にあるフレームワーク管理リソースとして使用されるネイティブ JPA EntityManager を作成します。これにより、
JpaVendorAdapter.postProcessEntityManager(EntityManager)を考慮して、基盤となるnative EntityManagerFactoryからネイティブEntityManagerが公開されます。postProcessEntityManager
アクティブに使用する前にネイティブ EntityManager を後処理するためのオプションのコールバック。デフォルトの実装は、利用可能な場合、
JpaVendorAdapter.postProcessEntityManager(jakarta.persistence.EntityManager)に委譲します。- パラメーター:
rawEntityManager- 後処理する EntityManager- 導入:
- 5.3
- 関連事項:
getPersistenceUnitInfo
インターフェースからコピーされた説明:EntityManagerFactoryInfoコンテナー内 API が使用された場合、この EntityManagerFactory の作成に使用された PersistenceUnitInfo を返します。- 次で指定:
- インターフェース
EntityManagerFactoryInfoのgetPersistenceUnitInfo - 戻り値:
- この EntityManagerFactory の作成に使用された PersistenceUnitInfo、またはコンテナー内契約が EntityManagerFactory の構成に使用されなかった場合は
null
getDataSource
インターフェースからコピーされた説明:EntityManagerFactoryInfoこの EntityManagerFactory が JDBC 接続を取得する JDBC DataSource を返します。- 次で指定:
- インターフェース
EntityManagerFactoryInfoのgetDataSource - 戻り値:
- JDBC DataSource、または不明の場合は
null
getObject
シングルトン EntityManagerFactory を返します。- 次で指定:
- インターフェース
FactoryBean<EntityManagerFactoryEE>のgetObject - 戻り値:
- Bean のインスタンス (
nullにすることができます) - 関連事項:
getObjectType
インターフェースからコピーされた説明:FactoryBeanこの FactoryBean が作成するオブジェクトの型を返します。事前にわからない場合はnullを返します。これにより、たとえばオートワイヤーなどで、オブジェクトをインスタンス化せずに特定の型の Bean を確認できます。
シングルトンオブジェクトを作成している実装の場合、このメソッドはシングルトンの作成を可能な限り回避しようとします。むしろ、事前に型を推定する必要があります。プロトタイプの場合、ここで意味のある型を返すこともお勧めします。
このメソッドは、この FactoryBean が完全に初期化される前に呼び出すことができます。初期化中に作成された状態に依存しないでください。もちろん、利用可能な場合はそのような状態を引き続き使用できます。
注意 : オートワイヤーは、ここで
nullを返す FactoryBeans を単に無視します。FactoryBean の現在の状態を使用して、このメソッドを適切に実装することを強くお勧めします。- 次で指定:
- インターフェース
FactoryBean<EntityManagerFactoryEE>のgetObjectType - 戻り値:
- この FactoryBean が作成するオブジェクトの型、または呼び出し時に不明な場合は
null - 関連事項:
isSingleton
public boolean isSingleton()インターフェースからコピーされた説明:FactoryBeanこのファクトリによって管理されるオブジェクトはシングルトンですか? つまり、FactoryBean.getObject()は常に同じオブジェクト(キャッシュ可能な参照)を返しますか?注意 : FactoryBean がシングルトンオブジェクトを保持することを示す場合、
getObject()から返されたオブジェクトは所有 BeanFactory によってキャッシュされる可能性があります。FactoryBean が常に同じ参照を公開しない限り、trueを返さないでください。FactoryBean 自体のシングルトンステータスは、通常、所有する BeanFactory によって提供されます。通常、そこではシングルトンとして定義する必要があります。
注意 :
falseを返すこのメソッドは、返されるオブジェクトが独立したインスタンスであることを必ずしも示しません。拡張SmartFactoryBeanインターフェースの実装は、SmartFactoryBean.isPrototype()メソッドを通じて独立したインスタンスを明示的に示す場合があります。この拡張インターフェースを実装しないプレーンなFactoryBean実装は、isSingleton()実装がfalseを返す場合、常に独立したインスタンスを返すと単純に想定されます。FactoryBeanは通常シングルトンインスタンスを管理するため、デフォルトの実装ではtrueが返されます。- 次で指定:
- インターフェース
FactoryBean<EntityManagerFactoryEE>のisSingleton - 戻り値:
- 公開されたオブジェクトがシングルトンかどうか
- 関連事項:
destroy
public void destroy()Bean 提供時のシャットダウンで EntityManagerFactory を閉じます。- 次で指定:
- インターフェース
DisposableBeanのdestroy
writeReplace