クラス LocalContainerEntityManagerFactoryBean
- 実装されているすべてのインターフェース:
- SerializableSE、- Aware、- BeanClassLoaderAware、- BeanFactoryAware、- BeanNameAware、- DisposableBean、- FactoryBean<EntityManagerFactoryEE>、- InitializingBean、- SmartInitializingSingleton、- ResourceLoaderAware、- LoadTimeWeaverAware、- PersistenceExceptionTranslator、- EntityManagerFactoryInfo
EntityManagerFactoryEE を作成する FactoryBean。これは、Spring アプリケーションコンテキストで共有 JPA EntityManagerFactory をセットアップする最も強力な方法です。EntityManagerFactory は、依存性注入を介して JPA ベースの DAO に渡すことができます。JNDI ルックアップまたは LocalEntityManagerFactoryBean 定義への切り替えは設定の問題であることに注意してください! LocalEntityManagerFactoryBean と同様に、構成設定は通常、一般的な JPA 構成規約に従って、クラスパスにある META-INF/persistence.xml 構成ファイルから読み込まれます。ただし、この FactoryBean は、persistence.xml ファイルの場所をオーバーライドしたり、リンク先の JDBC DataSources を指定したりできるなど、より柔軟性があります。さらに、特別な VM に結び付けられるのではなく、Spring の LoadTimeWeaver 抽象化によるプラグ可能なクラスインストルメンテーションを可能にします。JVM の起動時に指定されたエージェント。
 内部的には、この FactoryBean は persistence.xml ファイル自体を解析し、対応する PersistenceUnitInfoEE オブジェクト(JDBC DataSources や Spring LoadTimeWeaver などの追加の構成をマージしたもの)を作成して、選択した JPA PersistenceProviderEE に渡します。これは、標準 JPA コンテナー契約を完全にサポートするローカル JPA コンテナーに対応します。
 公開された EntityManagerFactory オブジェクトは、PersistenceProvider によって返される基礎となるネイティブ EntityManagerFactory のすべてのインターフェースと、この FactoryBean によって組み立てられた追加のメタデータを公開する EntityManagerFactoryInfo インターフェースを実装します。
- 導入:
- 2.0
- 作成者:
- Juergen Hoeller, Rod Johnson
- 関連事項:
- setPersistenceXmlLocation(java.lang.String)
- AbstractEntityManagerFactoryBean.setJpaProperties(java.util.Properties)
- AbstractEntityManagerFactoryBean.setJpaVendorAdapter(org.springframework.orm.jpa.JpaVendorAdapter)
- setLoadTimeWeaver(org.springframework.instrument.classloading.LoadTimeWeaver)
- setDataSource(javax.sql.DataSource)
- EntityManagerFactoryInfo
- LocalEntityManagerFactoryBean
- SharedEntityManagerBean
- PersistenceProvider.createContainerEntityManagerFactory(jakarta.persistence.spi.PersistenceUnitInfo, java.util.Map)
- 連載形式
 
- フィールドのサマリー- クラス org.springframework.orm.jpa.AbstractEntityManagerFactoryBean から継承されたフィールド- logger- インターフェース org.springframework.beans.factory.FactoryBean から継承されたフィールド- OBJECT_TYPE_ATTRIBUTE
- コンストラクターの概要コンストラクター
- メソッドのサマリー修飾子と型メソッド説明- void- protected EntityManagerFactoryEEサブクラスは、このメソッドを実装して、- getObject()メソッドによって返される EntityManagerFactory を作成する必要があります。- protected PersistenceUnitInfoEE- determinePersistenceUnitInfo- (PersistenceUnitManager persistenceUnitManager) この Bean によって作成された EntityManagerFactory に使用する PersistenceUnitInfo を決定します。この EntityManagerFactory が JDBC 接続を取得する JDBC DataSource を返します。コンテナー内 API が使用された場合、この EntityManagerFactory の作成に使用された PersistenceUnitInfo を返します。この EntityManagerFactory の作成に使用される永続性ユニットの名前を返します。名前のないデフォルトの場合は- nullを返します。- protected voidサブクラスが PersistenceProvider を介して作成した後に EntityManagerFactory をカスタマイズできるようにするフックメソッド。- void- setDataSource- (DataSourceSE dataSource) JPA 永続性プロバイダーがデータベースへのアクセスに使用することになっている JDBC DataSource を指定します。- void- setJtaDataSource- (DataSourceSE jtaDataSource) JPA 永続性プロバイダーがデータベースへのアクセスに使用することになっている JDBC DataSource を指定します。- void- setLoadTimeWeaver- (LoadTimeWeaver loadTimeWeaver) JPA クラストランスフォーマ契約に従ってクラスインスツルメンテーションに使用する Spring LoadTimeWeaver を指定します。- void- setManagedClassNameFilter- (ManagedClassNameFilter managedClassNameFilter) クラスパススキャンを使用して検出されたエンティティクラスに適用するように- ManagedClassNameFilterを設定します。- void- setManagedTypes- (PersistenceManagedTypes managedTypes) エンティティスキャンの代わりに管理対象の型のリストを作成するために使用する- PersistenceManagedTypesを設定します。- void- setMappingResources- (StringSE... mappingResources) デフォルトの永続性ユニットの 1 つ以上のマッピングリソース(- persistence.xmlの- <mapping-file>エントリに相当)を指定します。- void- setPackagesToScan- (StringSE... packagesToScan) - persistence.xmlマーカーを含む jar ファイルの JPA の標準スキャンを使用する代わりに、クラスパスのエンティティクラスに Spring ベースのスキャンを使用するかどうかを設定します。- void- setPersistenceUnitManager- (PersistenceUnitManager persistenceUnitManager) この FactoryBean が EntityManagerFactory を構築することになっている JPA 永続性ユニットを取得するために使用する PersistenceUnitManager を設定します。- void- setPersistenceUnitName- (StringSE persistenceUnitName) 該当する場合、指定された永続性ユニット名をデフォルトの永続性ユニットの名前として使用します。- void- setPersistenceUnitPostProcessors- (PersistenceUnitPostProcessor... postProcessors) この EntityManagerFactory の作成に使用される PersistenceUnitInfo に適用される PersistenceUnitPostProcessors を設定します。- void- setPersistenceUnitRootLocation- (StringSE defaultPersistenceUnitRootLocation) デフォルトの永続性ユニットの永続性ユニットルートの場所を設定します。- void- setPersistenceXmlLocation- (StringSE persistenceXmlLocation) 使用する- persistence.xmlファイルの場所を設定します。- void- setResourceLoader- (ResourceLoader resourceLoader) このオブジェクトが実行される ResourceLoader を設定します。- void- setSharedCacheMode- (SharedCacheModeEE sharedCacheMode) この永続性ユニットに JPA 2.0 共有キャッシュモードを指定し、設定されている場合は- persistence.xmlの値をオーバーライドします。- void- setValidationMode- (ValidationModeEE validationMode) この永続性ユニットの JPA 2.0 検証モードを指定し、設定されている場合は- persistence.xmlの値をオーバーライドします。- クラス org.springframework.orm.jpa.AbstractEntityManagerFactoryBean から継承されたメソッド- afterSingletonsInstantiated, createEntityManagerFactoryProxy, createNativeEntityManager, destroy, getBeanClassLoader, getBootstrapExecutor, getEntityManagerInterface, getJpaDialect, getJpaPropertyMap, getJpaVendorAdapter, getNativeEntityManagerFactory, getObject, getObjectType, getPersistenceProvider, isSingleton, postProcessEntityManager, setBeanClassLoader, setBeanFactory, setBeanName, setBootstrapExecutor, setEntityManagerFactoryInterface, setEntityManagerInitializer, setEntityManagerInterface, setJpaDialect, setJpaProperties, setJpaPropertyMap, setJpaVendorAdapter, setPersistenceProvider, setPersistenceProviderClass, translateExceptionIfPossible, writeReplace
- コンストラクターの詳細- LocalContainerEntityManagerFactoryBeanpublic LocalContainerEntityManagerFactoryBean()
 
- メソッドの詳細- setPersistenceUnitManagerこの FactoryBean が EntityManagerFactory を構築することになっている JPA 永続性ユニットを取得するために使用する PersistenceUnitManager を設定します。- デフォルトでは、この FactoryBean で指定された "persistenceXmlLocation"、"dataSource"、"loadTimeWeaver" などのローカル設定に依存します。 - 既存の永続性ユニット構成またはカスタム永続性ユニット処理のより高度な形式を再利用するには、別個の PersistenceUnitManager Bean(通常は DefaultPersistenceUnitManager インスタンス)を定義し、ここにリンクすることを検討してください。このようなシナリオでは、 - persistence.xmlロケーション、DataSource 構成、LoadTimeWeaver は、その別個の DefaultPersistenceUnitManager Bean で定義されます。
- setPersistenceXmlLocation使用する- persistence.xmlファイルの場所を設定します。これは Spring リソースの場所です。- デフォルトは "classpath:META-INF/persistence.xml" です。 - NOTE: 外部 PersistenceUnitManager が指定されていない場合にのみ適用されます。 - パラメーター:
- persistenceXmlLocation- この LocalContainerEntityManagerFactoryBean が解析する- persistence.xmlファイルの場所を識別する Spring リソース文字列
- 関連事項:
 
- setPersistenceUnitName該当する場合、指定された永続性ユニット名をデフォルトの永続性ユニットの名前として使用します。- NOTE: 外部 PersistenceUnitManager が指定されていない場合にのみ適用されます。 
- setPersistenceUnitRootLocationデフォルトの永続性ユニットの永続性ユニットルートの場所を設定します。- デフォルトは "classpath:"、つまり現在のクラスパスのルート(最も近いルートディレクトリ)です。ユニット固有の解決が機能せず、クラスパスのルートも適切でない場合はオーバーライドされます。 - NOTE: 外部 PersistenceUnitManager が指定されていない場合にのみ適用されます。 
- setManagedTypesエンティティスキャンの代わりに管理対象の型のリストを作成するために使用する- PersistenceManagedTypesを設定します。- パラメーター:
- managedTypes- 管理された型
- 導入:
- 6.0
- 関連事項:
 
- setPackagesToScan- persistence.xmlマーカーが含まれている jar ファイルの JPA の標準スキャンを使用する代わりに、クラスパスのエンティティクラスに対して Spring ベースのスキャンを使用するかどうかを設定します。Spring ベースのスキャンの場合、- persistence.xmlは必要ありません。ここで検索するベースパッケージを指定するだけです。- デフォルトはなしです。クラスパスでエンティティクラスの自動検出を検索するパッケージを指定します。これは、Spring のコンポーネントスキャン機能( - ClassPathBeanDefinitionScanner)に類似しています。- 代わりに、AOT 処理によってスキャンロジックを最適化できる - PersistenceManagedTypesを設定することを検討してください。- 注: 通常の JPA スキャンと比較して制限がある場合があります。特に、JPA プロバイダーは、 - persistence.xmlによって駆動される場合にのみ、プロバイダー固有のアノテーションのアノテーション付きパッケージを取得できます。4.1 では、指定された- JpaVendorAdapterでサポートされている場合 (たとえば、Hibernate の場合)、Spring のスキャンはアノテーション付きパッケージも検出できます。- これらのパッケージに加えて明示的な - mapping resourcesが指定されていない場合、Spring のセットアップはクラスパスでデフォルトの- META-INF/orm.xmlファイルを探し、マッピングファイルが- persistence.xmlファイルと同じ場所にない場合(デフォルトで)、それをデフォルトユニットのマッピングリソースとして登録します。この場合は、標準の JPA のように、そこで定義された永続性ユニットでのみ使用することを想定しています。- NOTE: 外部 PersistenceUnitManager が指定されていない場合にのみ適用されます。 - パラメーター:
- packagesToScan- 通常の Spring コンポーネントの Spring のコンポーネントスキャン構成に類似した、検索する 1 つ以上の基本パッケージ
- 関連事項:
 
- setManagedClassNameFilterクラスパススキャンを使用して検出されたエンティティクラスに適用するように- ManagedClassNameFilterを設定します。- パラメーター:
- managedClassNameFilter- エンティティクラスをフィルタリングするための述語
- 導入:
- 6.1.4
- 関連事項:
 
- setMappingResourcesデフォルトの永続性ユニットの 1 つ以上のマッピングリソース(- persistence.xmlの- <mapping-file>エントリに相当)を指定します。単独で使用することも、クラスパスでエンティティスキャンと組み合わせて使用することもできます。どちらの場合も、- persistence.xmlは使用しません。- マッピングリソースは、 - ClassLoader.getResourceを介してロードできるように、クラスパスルート ( "META-INF/mappings.xml" や "com/mycompany/repository/mappings.xml" など) を基準にする必要があることに注意してください。- packages to scanの隣に明示的なマッピングリソースが指定されていない場合、Spring のセットアップは、クラスパスでデフォルトの- META-INF/orm.xmlファイルを探し、マッピングファイルが- persistence.xmlファイルと同じ場所にない場合(デフォルトのユニットのマッピングリソースとして登録します)ここでは、標準の JPA のように、そこで定義された永続性ユニットでのみ使用されることを想定しています。- ここで空の配列 / リストを指定すると、デフォルトの - META-INF/orm.xmlチェックが抑制されることに注意してください。一方、ここで- META-INF/orm.xmlを明示的に指定すると、- persistence.xmlファイルと同じ場所に配置されている場合でも、そのファイルが登録されます。- NOTE: 外部 PersistenceUnitManager が指定されていない場合にのみ適用されます。 
- setValidationModeこの永続性ユニットの JPA 2.0 検証モードを指定し、設定されている場合は- persistence.xmlの値をオーバーライドします。- NOTE: 外部 PersistenceUnitManager が指定されていない場合にのみ適用されます。 
- setDataSourceJPA 永続性プロバイダーがデータベースへのアクセスに使用する JDBC DataSource を指定します。これは、JDBC 構成を- persistence.xmlに保持する代わりに、代わりに Spring 管理の DataSource を渡します。- JPA で言えば、ここで渡された DataSource は、PersistenceProvider に渡される PersistenceUnitInfo の "nonJtaDataSource" として使用され、 - persistence.xml(存在する場合) のデータソース構成も上書きされます。このバリアントは通常 JTA トランザクション管理にも機能することに注意してください。機能しない場合は、代わりに明示的な- setJtaDataSource(javax.sql.DataSource)を使用することを検討してください。- NOTE: 外部 PersistenceUnitManager が指定されていない場合にのみ適用されます。 
- setJtaDataSourceJPA 永続性プロバイダーがデータベースへのアクセスに使用する JDBC DataSource を指定します。これは、JDBC 構成を- persistence.xmlに保持する代わりに、代わりに Spring 管理の DataSource を渡します。- JPA で言えば、ここで渡された DataSource は、PersistenceProvider に渡される PersistenceUnitInfo の "jtaDataSource" として使用され、 - persistence.xmlのデータソース構成 (存在する場合) もオーバーライドされます。- NOTE: 外部 PersistenceUnitManager が指定されていない場合にのみ適用されます。 
- setPersistenceUnitPostProcessorsこの EntityManagerFactory の作成に使用される PersistenceUnitInfo に適用される PersistenceUnitPostProcessors を設定します。- このようなポストプロセッサーは、たとえば、 - persistence.xmlから読み取られたメタデータに加えて、さらにエンティティクラスと jar ファイルを登録できます。- NOTE: 外部 PersistenceUnitManager が指定されていない場合にのみ適用されます。 
- setLoadTimeWeaverJPA クラストランスフォーマ契約に従ってクラスインスツルメンテーションに使用する Spring LoadTimeWeaver を指定します。- LoadTimeWeaver を指定する必要はありません。ほとんどのプロバイダーは、クラスインストルメンテーションなしで機能のサブセットを提供したり、JVM の起動時に指定された VM エージェントで動作したりできます。 - Spring が提供するウィービングオプションの中で、最も重要なものは、JVM の起動時に指定された Spring に特化した(しかし非常に一般的な)VM エージェントを必要とする InstrumentationLoadTimeWeaver と、その上で利用可能な特定の拡張メソッドに基づいて基礎となる ClassLoader と相互作用する ReflectiveLoadTimeWeaver です。 - 注意 : Spring 2.5 以降、コンテキストのデフォルトの LoadTimeWeaver (名前が "loadTimeWeaver" の Bean として定義) が利用可能な場合は自動的に取得されるため、影響を受ける各ターゲット Bean で LoadTimeWeaver を構成する必要がなくなります。このような共有 LoadTimeWeaver を作成するには、 - context:load-time-weaverXML タグの使用を検討してください (デフォルトで環境を自動検出します)。- 注意 : 外部 PersistenceUnitManager が指定されていない場合にのみ適用されます。それ以外の場合、外部 - PersistenceUnitManagerがウィービング構成を担当します。- 次で指定:
-  インターフェース LoadTimeWeaverAwareのsetLoadTimeWeaver
- パラメーター:
- loadTimeWeaver-- LoadTimeWeaverインスタンス (非- null)
- 関連事項:
 
- setResourceLoaderインターフェースからコピーされた説明:- ResourceLoaderAwareこのオブジェクトが実行される ResourceLoader を設定します。- これは ResourcePatternResolver であり、 - instanceof ResourcePatternResolverで確認できます。- ResourcePatternUtils.getResourcePatternResolverメソッドも参照してください。- 通常の Bean プロパティの設定後、InitializingBean の - afterPropertiesSetまたはカスタム init メソッドのような初期コールバックの前に呼び出されます。ApplicationContextAware の- setApplicationContextの前に呼び出されます。- 次で指定:
-  インターフェース ResourceLoaderAwareのsetResourceLoader
- パラメーター:
- resourceLoader- このオブジェクトによって使用される ResourceLoader オブジェクト
- 関連事項:
 
- afterPropertiesSetインターフェースからコピーされた説明:- InitializingBeanすべての Bean プロパティを設定し、- BeanFactoryAware、- ApplicationContextAwareなどを満たした後、包含- BeanFactoryによって呼び出されます。- このメソッドにより、Bean インスタンスは、すべての Bean プロパティが設定されたときに、その全体的な構成の検証と最終的な初期化を実行できます。 - 次で指定:
-  インターフェース InitializingBeanのafterPropertiesSet
- オーバーライド:
-  クラス AbstractEntityManagerFactoryBeanのafterPropertiesSet
- 例外:
- PersistenceExceptionEE
 
- createNativeEntityManagerFactoryクラスからコピーされた説明:- AbstractEntityManagerFactoryBeanサブクラスは、このメソッドを実装して、- getObject()メソッドによって返される EntityManagerFactory を作成する必要があります。- 次で指定:
-  クラス AbstractEntityManagerFactoryBeanのcreateNativeEntityManagerFactory
- 戻り値:
- この FactoryBean によって返される EntityManagerFactory インスタンス
- 例外:
- PersistenceExceptionEE- EntityManager を作成できない場合
 
- determinePersistenceUnitInfoprotected PersistenceUnitInfoEE determinePersistenceUnitInfo- (PersistenceUnitManager persistenceUnitManager) この Bean によって作成された EntityManagerFactory に使用する PersistenceUnitInfo を決定します。- デフォルトの実装では、JPA 仕様で定義されているように、すべての永続性ユニット情報を - persistence.xmlから読み取ります。エンティティマネージャー名が指定されていない場合は、リーダーから返された配列の最初の情報を取得します。それ以外の場合は、一致する名前を確認します。- パラメーター:
- persistenceUnitManager- から取得する PersistenceUnitManager
- 戻り値:
- 選択された PersistenceUnitInfo
 
- postProcessEntityManagerFactoryprotected void postProcessEntityManagerFactory- (EntityManagerFactoryEE emf, PersistenceUnitInfoEE pui) サブクラスが PersistenceProvider を介して作成した後に EntityManagerFactory をカスタマイズできるようにするフックメソッド。- デフォルトの実装は空です。 - パラメーター:
- emf- 新しく作成した EntityManagerFactory で作業しています
- pui- EntityManagerFactory の構成に使用される PersistenceUnitInfo
- 関連事項:
 
- getPersistenceUnitInfoインターフェースからコピーされた説明:- EntityManagerFactoryInfoコンテナー内 API が使用された場合、この EntityManagerFactory の作成に使用された PersistenceUnitInfo を返します。- 次で指定:
-  インターフェース EntityManagerFactoryInfoのgetPersistenceUnitInfo
- オーバーライド:
-  クラス AbstractEntityManagerFactoryBeanのgetPersistenceUnitInfo
- 戻り値:
-  この EntityManagerFactory の作成に使用された PersistenceUnitInfo、またはコンテナー内契約が EntityManagerFactory の構成に使用されなかった場合は null
 
- getPersistenceUnitNameインターフェースからコピーされた説明:- EntityManagerFactoryInfoこの EntityManagerFactory の作成に使用される永続性ユニットの名前を返します。名前のないデフォルトの場合は- nullを返します。- getPersistenceUnitInfo()が null 以外を返す場合、- getPersistenceUnitName()の結果は- PersistenceUnitInfo.getPersistenceUnitName()によって返される値と等しくなければなりません。
- getDataSourceインターフェースからコピーされた説明:- EntityManagerFactoryInfoこの EntityManagerFactory が JDBC 接続を取得する JDBC DataSource を返します。- 次で指定:
-  インターフェース EntityManagerFactoryInfoのgetDataSource
- オーバーライド:
-  クラス AbstractEntityManagerFactoryBeanのgetDataSource
- 戻り値:
- JDBC DataSource、または不明の場合は null