クラス AbstractEntityManagerFactoryBean
- 実装されているすべてのインターフェース:
SerializableSE, Aware, BeanClassLoaderAware, BeanFactoryAware, BeanNameAware, DisposableBean, FactoryBean<jakarta.persistence.EntityManagerFactory>, InitializingBean, SmartFactoryBean<jakarta.persistence.EntityManagerFactory>, SmartInitializingSingleton, PersistenceExceptionTranslator, EntityManagerFactoryInfo
FactoryBean は、Spring アプリケーションコンテキスト内にローカル JPA EntityManagerFactory インスタンスを作成します。7.0 以降では、SmartFactoryBean を介して共有 EntityManager インスタンスも公開されるため、EntityManager も依存性注入に利用できるようになります。 スタンドアロンとコンテナーの両方を含む、様々な JPA ブートストラップ契約に共通する機能をカプセル化します。7.0 以降、JPA 3.2 PersistenceConfiguration メカニズムもサポートされており、より豊富なスタンドアロンブートストラップオプションが利用可能になります。
標準の JPA 構成規則と Spring のカスタマイズ可能な JpaVendorAdapter メカニズムのサポートを実装し、EntityManagerFactory のライフサイクルを制御します。
このクラスは、Spring の PersistenceExceptionTranslationPostProcessor によって自動検出された PersistenceExceptionTranslator インターフェースも実装し、ネイティブ例外を Spring DataAccessExceptions に AOP ベースで変換します。たとえば LocalEntityManagerFactoryBean が存在すると、PersistenceExceptionTranslationPostProcessor は JPA 例外を自動的に変換できるようになります。
- 導入:
- 2.0
- 作成者:
- Juergen Hoeller, Rod Johnson
- 関連事項:
フィールドのサマリー
フィールドインターフェース FactoryBean から継承されたフィールド
OBJECT_TYPE_ATTRIBUTEコンストラクターの概要
コンストラクターメソッドのサマリー
修飾子と型メソッド説明voidvoidシングルトン事前インスタンス化フェーズの終わりに呼び出され、すべての通常のシングルトン Bean がすでに作成されていることを保証します。protected jakarta.persistence.EntityManagerFactorycreateEntityManagerFactoryProxy(@Nullable jakarta.persistence.EntityManagerFactory emf) 指定されたEntityManagerFactoryのプロキシを作成します。jakarta.persistence.EntityManagercreateNativeEntityManager(@Nullable MapSE<?, ?> properties) アプリケーションレベルの EntityManager ハンドルの背後にあるフレームワーク管理リソースとして使用されるネイティブ JPA EntityManager を作成します。protected abstract jakarta.persistence.EntityManagerFactoryサブクラスは、このメソッドを実装して、getObject()メソッドによって返される EntityManagerFactory を作成する必要があります。voiddestroy()Bean 提供時のシャットダウンで EntityManagerFactory を閉じます。アプリケーションの Bean がロードされる ClassLoader を返します。protected @Nullable BeanFactoryバックグラウンドブートストラップの非同期エグゼキューターを返します(ある場合)。この EntityManagerFactory が JDBC 接続を取得する JDBC DataSource を返します。このファクトリの EntityManagers が実装する(潜在的にベンダー固有の)EntityManager インターフェースを返します。この EntityManagerFactory のベンダー固有の JpaDialect 実装、または不明の場合はnullを返します。特定のエントリを追加またはオーバーライドするオプションを使用して、JPA プロパティへのMapアクセスを永続性プロバイダーに渡すことを許可します。この EntityManagerFactory の JpaVendorAdapter 実装を返します。不明な場合はnullを返します。jakarta.persistence.EntityManagerFactory元の EntityManagerFactory をそのまま返します。@Nullable jakarta.persistence.EntityManagerFactoryシングルトン EntityManagerFactory を返します。<S> @Nullable Sシングルトン EntityManagerFactory または共有 EntityManager プロキシのいずれかを返します。ClassSE<? extends jakarta.persistence.EntityManagerFactory> この FactoryBean が作成するオブジェクトの型を返します。事前にわからない場合はnullを返します。@Nullable jakarta.persistence.spi.PersistenceProvider基になる EntityManagerFactory の作成に使用された基になる PersistenceProvider を返します。@Nullable jakarta.persistence.spi.PersistenceUnitInfoコンテナー内 API が使用された場合、この EntityManagerFactory の作成に使用された PersistenceUnitInfo を返します。この EntityManagerFactory の作成に使用される永続性ユニットの名前を返します。名前のないデフォルトの場合はnullを返します。protected voidpostProcessEntityManager(jakarta.persistence.EntityManager rawEntityManager) アクティブに使用する前にネイティブ EntityManager を後処理するためのオプションのコールバック。voidsetBeanClassLoader(ClassLoaderSE classLoader) Beanclass loaderSE を Bean インスタンスに提供するコールバック。voidsetBeanFactory(BeanFactory beanFactory) 所有ファクトリを Bean インスタンスに提供するコールバック。voidsetBeanName(StringSE name) この Bean を作成した Bean ファクトリで Bean の名前を設定します。voidsetBootstrapExecutor(@Nullable AsyncTaskExecutor bootstrapExecutor) バックグラウンドブートストラップ用の非同期エグゼキュータ (例:SimpleAsyncTaskExecutor) を指定します。voidsetEntityManagerFactoryInterface(ClassSE<? extends jakarta.persistence.EntityManagerFactory> emfInterface) この EntityManagerFactory プロキシが実装することになっている(潜在的にベンダー固有の)EntityManagerFactory インターフェースを指定します。voidsetEntityManagerInitializer(ConsumerSE<jakarta.persistence.EntityManager> entityManagerInitializer) 公開されたEntityManagerFactoryによって作成されたすべてのEntityManagerをカスタマイズするためのコールバックを指定します。voidsetEntityManagerInterface(@Nullable ClassSE<? extends jakarta.persistence.EntityManager> emInterface) このファクトリの EntityManagers が実装することになっている(潜在的にベンダー固有の)EntityManager インターフェースを指定します。voidsetJpaDialect(@Nullable JpaDialect jpaDialect) この EntityManagerFactory に関連付けるベンダー固有の JpaDialect 実装を指定します。voidsetJpaProperties(PropertiesSE jpaProperties) Persistence.createEntityManagerFactory(存在する場合)に渡される JPA プロパティを指定します。voidsetJpaPropertyMap(@Nullable MapSE<StringSE, ?> jpaProperties) JPA プロパティをマップとして指定し、Persistence.createEntityManagerFactory(存在する場合)に渡されます。voidsetJpaVendorAdapter(@Nullable JpaVendorAdapter jpaVendorAdapter) 必要に応じて、目的の JPA プロバイダーの JpaVendorAdapter 実装を指定します。voidsetPersistenceProvider(@Nullable jakarta.persistence.spi.PersistenceProvider persistenceProvider) EntityManagerFactory の作成に使用する PersistenceProvider インスタンスを設定します。voidsetPersistenceProviderClass(ClassSE<? extends jakarta.persistence.spi.PersistenceProvider> persistenceProviderClass) EntityManagerFactory の作成に使用する PersistenceProvider 実装クラスを設定します。voidsetPersistenceUnitName(@Nullable StringSE persistenceUnitName) EntityManagerFactory 構成の名前を指定します。booleansupportsType(ClassSE<?> type) このファクトリがリクエストされた型をサポートしているかどうかを判断します。Spring の PersistenceExceptionTranslationPostProcessor によって自動検出される PersistenceExceptionTranslator インターフェースの実装。protected ObjectSEクラス ObjectSE から継承されたメソッド
clone, equalsSE, finalize, getClass, hashCode, notify, notifyAll, toString, wait, waitSE, waitSEインターフェース FactoryBean から継承されたメソッド
isSingletonインターフェース SmartFactoryBean から継承されたメソッド
isEagerInit, isPrototype
フィールドの詳細
logger
protected final org.apache.commons.logging.Log loggerサブクラスで利用可能なロガー。
コンストラクターの詳細
AbstractEntityManagerFactoryBean
public AbstractEntityManagerFactoryBean()
メソッドの詳細
setPersistenceProviderClass
public void setPersistenceProviderClass(ClassSE<? extends jakarta.persistence.spi.PersistenceProvider> persistenceProviderClass) EntityManagerFactory の作成に使用する PersistenceProvider 実装クラスを設定します。指定されていない場合、永続性プロバイダーは JpaVendorAdapter(存在する場合)から取得されるか、スキャンによって(可能な限り)取得されます。- 関連事項:
setPersistenceProvider
public void setPersistenceProvider(@Nullable jakarta.persistence.spi.PersistenceProvider persistenceProvider) EntityManagerFactory の作成に使用する PersistenceProvider インスタンスを設定します。指定しない場合、永続化プロバイダーは JpaVendorAdapter(存在する場合)から取得されるか、永続化ユニットデプロイ記述子によって(可能な限り)決定されます。- 関連事項:
getPersistenceProvider
インターフェースからコピーされた説明:EntityManagerFactoryInfo基になる EntityManagerFactory の作成に使用された基になる PersistenceProvider を返します。- 次で指定:
- インターフェース
EntityManagerFactoryInfoのgetPersistenceProvider - 戻り値:
- この EntityManagerFactory の作成に使用された PersistenceProvider、または EntityManagerFactory の構成に標準の JPA プロバイダー自動検出プロセスが使用された場合は
null
setPersistenceUnitName
getPersistenceUnitName
インターフェースからコピーされた説明:EntityManagerFactoryInfoこの EntityManagerFactory の作成に使用される永続性ユニットの名前を返します。名前のないデフォルトの場合はnullを返します。getPersistenceUnitInfo()が null 以外を返す場合、getPersistenceUnitName()の結果はPersistenceUnitInfo.getPersistenceUnitName()によって返される値と等しくなければなりません。- 次で指定:
- インターフェース
EntityManagerFactoryInfoのgetPersistenceUnitName - 関連事項:
setJpaProperties
Persistence.createEntityManagerFactory(存在する場合)に渡される JPA プロパティを指定します。文字列 "value" (PropertiesEditor で解析)または XML Bean 定義の "props" 要素を入力できます。
- 関連事項:
setJpaPropertyMap
getJpaPropertyMap
setEntityManagerFactoryInterface
public void setEntityManagerFactoryInterface(ClassSE<? extends jakarta.persistence.EntityManagerFactory> emfInterface) この EntityManagerFactory プロキシが実装することになっている(潜在的にベンダー固有の)EntityManagerFactory インターフェースを指定します。デフォルトは、特定の JpaVendorAdapter(存在する場合)から取得されるか、標準の
jakarta.persistence.EntityManagerFactoryインターフェースに設定されます。- 関連事項:
setEntityManagerInterface
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
public void setEntityManagerInitializer(ConsumerSE<jakarta.persistence.EntityManager> entityManagerInitializer) 公開されたEntityManagerFactoryによって作成されたすべてのEntityManagerをカスタマイズするためのコールバックを指定します。これは、
JpaVendorAdapter、-level、postProcessEntityManager実装の代替であり、Hibernate フィルターの設定など、アプリケーションの目的に合わせた便利なカスタマイズを可能にします。- 導入:
- 5.3
- 関連事項:
setBootstrapExecutor
バックグラウンドブートストラップ用の非同期エグゼキュータ (例:SimpleAsyncTaskExecutor) を指定します。次に、
EntityManagerFactoryの初期化がバックグラウンドブートストラップモードに切り替わり、JPA プロバイダーのブートストラップが完了するのを待つのではなく、注入のためにEntityManagerFactoryプロキシがすぐに返されます。ただし、EntityManagerFactoryメソッドへの最初の実際の呼び出しは、JPA プロバイダーのブートストラップが完了するまでブロックされます。最大限のメリットを得るには、メタデータのイントロスペクションの目的であっても、関連する Bean の init メソッドでの初期のEntityManagerFactory呼び出しを避けてください。6.2 以降、コンテキストのリフレッシュが完了する前に JPA の初期化が強制され、それまでに非同期ブートストラップが完了するまで待機します。
- 導入:
- 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 は、ファクトリのメソッドをすぐに呼び出すことができます。- 関連事項:
getBeanFactory
setBeanName
インターフェースからコピーされた説明:BeanNameAwareこの Bean を作成した Bean ファクトリで Bean の名前を設定します。通常の Bean プロパティの設定後、ただし
InitializingBean.afterPropertiesSet()またはカスタム init メソッドなどの init コールバックの前に呼び出されます。- 次で指定:
- インターフェース
BeanNameAwareのsetBeanName - パラメーター:
name- ファクトリ内の Bean の名前。この名前は、ファクトリで使用される実際の Bean 名であり、最初に指定した名前とは異なる場合があります。特に内部 Bean 名の場合、実際の Bean 名は "#..." サフィックスを追加することで一意になります。必要に応じて、BeanFactoryUtils.originalBeanName(String)メソッドを使用して、元の Bean 名(サフィックスなし)を抽出します。
getBeanName
afterPropertiesSet
public void afterPropertiesSet() throws jakarta.persistence.PersistenceExceptionインターフェースからコピーされた説明:InitializingBeanすべての Bean プロパティを設定し、BeanFactoryAware、ApplicationContextAwareなどを満たした後、包含BeanFactoryによって呼び出されます。このメソッドにより、Bean インスタンスは、すべての Bean プロパティが設定されたときに、その全体的な構成の検証と最終的な初期化を実行できます。
- 次で指定:
- インターフェース
InitializingBeanのafterPropertiesSet - 例外:
jakarta.persistence.PersistenceException
afterSingletonsInstantiated
public void afterSingletonsInstantiated()インターフェースからコピーされた説明:SmartInitializingSingletonシングルトン事前インスタンス化フェーズの終わりに呼び出され、すべての通常のシングルトン Bean がすでに作成されていることを保証します。このメソッド内のListableBeanFactory.getBeansOfType(Class)呼び出しは、ブートストラップ中に偶発的な副作用を引き起こしません。注意 : このコールバックは、
BeanFactoryブートストラップ後にオンデマンドで遅延初期化されたシングルトン Bean ではトリガーされず、他の Bean スコープでもトリガーされません。意図されたブートストラップセマンティクスのみを使用する Bean には慎重に使用してください。- 次で指定:
- インターフェース
SmartInitializingSingletonのafterSingletonsInstantiated
createEntityManagerFactoryProxy
protected jakarta.persistence.EntityManagerFactory createEntityManagerFactoryProxy(@Nullable jakarta.persistence.EntityManagerFactory emf) 指定されたEntityManagerFactoryのプロキシを作成します。これにより、アプリケーション管理のEntityManagerに対してトランザクション対応のプロキシを返すことができます。- パラメーター:
emf- 永続化プロバイダーによって返された EntityManagerFactory(すでに初期化されている場合)- 戻り値:
- EntityManagerFactory プロキシ
createNativeEntityManagerFactory
protected abstract jakarta.persistence.EntityManagerFactory createNativeEntityManagerFactory() throws jakarta.persistence.PersistenceExceptionサブクラスは、このメソッドを実装して、getObject()メソッドによって返される EntityManagerFactory を作成する必要があります。- 戻り値:
- この FactoryBean によって返される EntityManagerFactory インスタンス
- 例外:
jakarta.persistence.PersistenceException- EntityManager を作成できない場合
translateExceptionIfPossible
Spring の PersistenceExceptionTranslationPostProcessor によって自動検出される PersistenceExceptionTranslator インターフェースの実装。可能であれば、ダイアレクトの変換を使用します。そうでない場合、標準の JPA 例外変換にフォールバックします。
- 次で指定:
- インターフェース
PersistenceExceptionTranslatorのtranslateExceptionIfPossible - パラメーター:
ex- 変換する RuntimeException- 戻り値:
- 対応する DataAccessException (または、例外を変換できなかった場合は
null。この場合、実際の永続性の問題ではなく、ユーザーコードが原因である可能性があります。) - 関連事項:
getNativeEntityManagerFactory
public jakarta.persistence.EntityManagerFactory getNativeEntityManagerFactory()インターフェースからコピーされた説明:EntityManagerFactoryInfo元の EntityManagerFactory をそのまま返します。- 次で指定:
- インターフェース
EntityManagerFactoryInfoのgetNativeEntityManagerFactory - 戻り値:
- 飾り気のない EntityManagerFactory (非
null)
createNativeEntityManager
インターフェースからコピーされた説明:EntityManagerFactoryInfoアプリケーションレベルの EntityManager ハンドルの背後にあるフレームワーク管理リソースとして使用されるネイティブ JPA EntityManager を作成します。これにより、
JpaVendorAdapter.postProcessEntityManager(EntityManager)を考慮して、基盤となるnative EntityManagerFactoryからネイティブEntityManagerが公開されます。- 次で指定:
- インターフェース
EntityManagerFactoryInfoのcreateNativeEntityManager - 関連事項:
postProcessEntityManager
protected void postProcessEntityManager(jakarta.persistence.EntityManager rawEntityManager) アクティブに使用する前にネイティブ EntityManager を後処理するためのオプションのコールバック。デフォルトの実装は、利用可能な場合、
JpaVendorAdapter.postProcessEntityManager(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<jakarta.persistence.EntityManagerFactory>のgetObject - 戻り値:
- Bean のインスタンス (
nullにすることができます) - 関連事項:
getObjectType
インターフェースからコピーされた説明:FactoryBeanこの FactoryBean が作成するオブジェクトの型を返します。事前にわからない場合はnullを返します。これにより、たとえばオートワイヤーなどで、オブジェクトをインスタンス化せずに特定の型の Bean を確認できます。
シングルトンオブジェクトを作成する実装の場合、このメソッドはシングルトンの作成を可能な限り回避し、事前に型を推定する必要があります。プロトタイプの場合は、ここで意味のある型を返すことも推奨されます。
このメソッドは、この FactoryBean が完全に初期化される前に呼び出すことができます。初期化中に作成された状態に依存しないでください。もちろん、利用可能な場合はそのような状態を引き続き使用できます。
注意 : オートワイヤーは、ここで
nullを返す FactoryBeans を単に無視します。FactoryBean の現在の状態を使用して、このメソッドを適切に実装することを強くお勧めします。- 次で指定:
- インターフェース
FactoryBean<jakarta.persistence.EntityManagerFactory>のgetObjectType - 戻り値:
- この FactoryBean が作成するオブジェクトの型、または呼び出し時に不明な場合は
null - 関連事項:
getObject
シングルトン EntityManagerFactory または共有 EntityManager プロキシのいずれかを返します。- 次で指定:
- インターフェース
SmartFactoryBean<jakarta.persistence.EntityManagerFactory>のgetObject - パラメーター:
type- リクエストされた型- 戻り値:
- このファクトリによって管理される対応するインスタンス、または利用できない場合は
null - 例外:
ExceptionSE- 作成エラーの場合- 関連事項:
supportsType
インターフェースからコピーされた説明:SmartFactoryBeanこのファクトリがリクエストされた型をサポートしているかどうかを判断します。デフォルトでは、
FactoryBean.getObjectType()で示されるように、ファクトリによって公開されるプライマリ型をサポートします。特定のファクトリでは、依存性注入のために追加の型をサポートする場合があります。- 次で指定:
- インターフェース
SmartFactoryBean<jakarta.persistence.EntityManagerFactory>のsupportsType - パラメーター:
type- リクエストされた型- 戻り値:
-
SmartFactoryBean.getObject(Class)が対応するインスタンスを返すことができる場合はtrue、そうでない場合はfalse - 関連事項:
destroy
public void destroy()Bean 提供時のシャットダウンで EntityManagerFactory を閉じます。- 次で指定:
- インターフェース
DisposableBeanのdestroy
writeReplace