クラス LocalSessionFactoryBean
- 実装されているすべてのインターフェース:
Aware, BeanFactoryAware, DisposableBean, FactoryBean<SessionFactory>, InitializingBean, SmartFactoryBean<SessionFactory>, SmartInitializingSingleton, ResourceLoaderAware, PersistenceExceptionTranslator
SessionFactory を作成する FactoryBean。これは、Spring アプリケーションコンテキストで共有 Hibernate SessionFactory を設定する通常の方法です。次に、SessionFactory を依存性注入を介してデータアクセスオブジェクトに渡すことができます。Spring Framework 7.0 以降、Hibernate ORM 7.1 と互換性があります。この Hibernate 固有の LocalSessionFactoryBean は、一般的な JPA の目的で LocalContainerEntityManagerFactoryBean の即時代替として使用できます。Hibernate SessionFactory は JPA EntityManagerFactory インターフェースもネイティブに公開し、Hibernate BeanContainer 統合はすぐに登録されます。HibernateTransactionManager と組み合わせると、同じトランザクション内で JPA アクセスコードとネイティブ Hibernate アクセスコードを混在させることが自然に可能になります。
- 導入:
- 7.0
- 作成者:
- Juergen Hoeller
- 関連事項:
フィールドのサマリー
インターフェース FactoryBean から継承されたフィールド
OBJECT_TYPE_ATTRIBUTEコンストラクターの概要
コンストラクター方法の概要
修飾子と型メソッド説明voidvoidシングルトン事前インスタンス化フェーズの終わりに呼び出され、すべての通常のシングルトン Bean がすでに作成されていることを保証します。protected SessionFactoryサブクラスはこのメソッドをオーバーライドして、SessionFactory インスタンスのカスタム初期化を実行し、この LocalSessionFactoryBean によって準備された特定の Configuration オブジェクトを介してインスタンスを作成できます。voiddestroy()Bean の破棄時に、包含BeanFactoryによって呼び出されます。final ConfigurationSessionFactory の構築に使用される Hibernate 構成オブジェクトを返します。Hibernate プロパティを返します(ある場合)。使用する HibernateMetadataSourcesを決定します。このファクトリによって管理されるオブジェクトのインスタンス(おそらく共有または独立)を返します。<S> @Nullable Sシングルトン SessionFactory または共有 (ステートレス) セッションプロキシのいずれかを返します。ClassSE<?> この FactoryBean が作成するオブジェクトの型を返します。事前にわからない場合はnullを返します。Hibernate メタデータに使用する SpringResourceLoaderを決定します。voidsetAnnotatedClasses(ClassSE<?>... annotatedClasses) この Hibernate SessionFactory に登録するアノテーション付きエンティティクラスを指定します。voidsetAnnotatedPackages(StringSE... annotatedPackages) パッケージレベルのアノテーションメタデータが読み取られるアノテーション付きパッケージの名前を指定します。voidsetBeanFactory(BeanFactory beanFactory) 含まれているBeanFactoryを受け入れ、可能な場合は対応する HibernateBeanContainer統合を登録します。voidsetBootstrapExecutor(AsyncTaskExecutor bootstrapExecutor) バックグラウンドブートストラップ用の非同期エグゼキュータ (例:SimpleAsyncTaskExecutor) を指定します。voidsetCacheableMappingLocations(Resource... cacheableMappingLocations) キャッシュ可能な Hibernate マッピングファイルの場所を、たとえば Web アプリリソース "/WEB-INF/mapping/example.hbm.xml" として設定します。voidsetCacheRegionFactory(RegionFactory cacheRegionFactory) HibernateRegionFactoryを SessionFactory に使用するように設定します。voidsetConfigLocation(Resource configLocation) 単一の Hibernate XML 構成ファイルの場所を、たとえばクラスパスリソース "classpath:hibernate.cfg.xml" として設定します。voidsetConfigLocations(Resource... configLocations) 複数の Hibernate XML 構成ファイルの場所を、たとえばクラスパスリソース "classpath:hibernate.cfg.xml、classpath:extension.cfg.xml" として設定します。voidsetCurrentTenantIdentifierResolver(CurrentTenantIdentifierResolver<?> currentTenantIdentifierResolver) SessionFactory に渡されるCurrentTenantIdentifierResolverを設定します。voidsetDataSource(DataSourceSE dataSource) SessionFactory で使用する DataSource を設定します。voidsetEntityInterceptor(Interceptor entityInterceptor) データベースへの書き込みおよびデータベースからの読み取りを行う前に、プロパティ値をインスペクションおよび変更できる Hibernate エンティティインターセプターを設定します。voidsetEntityTypeFilters(TypeFilter... entityTypeFilters) エンティティクラスの Spring ベースのスキャン用にカスタム型フィルターを指定します。voidsetHibernateIntegrators(Integrator... hibernateIntegrators) 適用する 1 つ以上の HibernateIntegrator実装を指定します。voidsetHibernateProperties(PropertiesSE hibernateProperties) "hibernate.dialect" などの Hibernate プロパティを設定します。voidsetImplicitNamingStrategy(ImplicitNamingStrategy implicitNamingStrategy) SessionFactory の Hibernate 5ImplicitNamingStrategyを設定します。voidsetJtaTransactionManager(ObjectSE jtaTransactionManager) Hibernate で使用する SpringJtaTransactionManagerまたは JTATransactionManagerを設定します (存在する場合)。voidsetMappingDirectoryLocations(Resource... mappingDirectoryLocations) "WEB-INF/mappings" のように、Hibernate マッピングリソースを含むディレクトリの場所を設定します。voidsetMappingJarLocations(Resource... mappingJarLocations) "WEB-INF/lib/example.hbm.jar" のように、Hibernate マッピングリソースを含む jar ファイルの場所を設定します。voidsetMappingLocations(Resource... mappingLocations) Hibernate マッピングファイルの場所を、たとえばクラスパスリソース "classpath:example.hbm.xml" として設定します。voidsetMappingResources(StringSE... mappingResources) "example.hbm.xml" や "mypackage/example.hbm.xml" など、クラスパスにある Hibernate マッピングリソースを設定します。voidsetMetadataSources(MetadataSources metadataSources) 使用する HibernateMetadataSourcesサービスを指定します (たとえば、既存のものを再利用します)。カスタム Hibernate ブートストラップServiceRegistryも設定される可能性があります。voidsetMultiTenantConnectionProvider(MultiTenantConnectionProvider<?> multiTenantConnectionProvider) SessionFactory に渡されるMultiTenantConnectionProviderを設定します。voidsetPackagesToScan(StringSE... packagesToScan) クラスパスでエンティティクラスの自動検出を検索するパッケージを指定します。voidsetPhysicalNamingStrategy(PhysicalNamingStrategy physicalNamingStrategy) SessionFactory の Hibernate 5PhysicalNamingStrategyを設定します。voidsetResourceLoader(ResourceLoader resourceLoader) Hibernate メタデータに使用する SpringResourceLoaderを指定します。booleansupportsType(ClassSE<?> type) このファクトリがリクエストされた型をサポートしているかどうかを判断します。クラス HibernateExceptionTranslator から継承されたメソッド
convertHibernateAccessException, setJdbcExceptionTranslator, translateExceptionIfPossibleクラス ObjectSE から継承されたメソッド
clone, equalsSE, finalize, getClass, hashCode, notify, notifyAll, toString, wait, waitSE, waitSEインターフェース FactoryBean から継承されたメソッド
isSingletonインターフェース SmartFactoryBean から継承されたメソッド
isEagerInit, isPrototype
コンストラクターの詳細
LocalSessionFactoryBean
public LocalSessionFactoryBean()
メソッドの詳細
setDataSource
SessionFactory で使用する DataSource を設定します。設定されている場合、これは Hibernate プロパティの対応する設定をオーバーライドします。これが設定されている場合、Hibernate 設定では、無意味な二重構成を回避するために接続プロバイダーを定義しないでください。
setConfigLocation
単一の Hibernate XML 構成ファイルの場所を、たとえばクラスパスリソース "classpath:hibernate.cfg.xml" として設定します。メモ: 必要なすべてのプロパティとマッピングリソースがこの Bean を介してローカルで指定されている場合は省略できます。
- 関連事項:
setConfigLocations
複数の Hibernate XML 構成ファイルの場所を、たとえばクラスパスリソース "classpath:hibernate.cfg.xml、classpath:extension.cfg.xml" として設定します。メモ: 必要なすべてのプロパティとマッピングリソースがこの Bean を介してローカルで指定されている場合は省略できます。
- 関連事項:
setMappingResources
"example.hbm.xml" や "mypackage/example.hbm.xml" のように、クラスパスで見つかる Hibernate マッピングリソースを設定します。Hibernate XML 構成ファイルのマッピングエントリに類似しています。より汎用的な setMappingLocations メソッドの代替です。Hibernate XML 構成ファイルからマッピングに追加するか、すべてのマッピングをローカルで指定するために使用できます。
- 関連事項:
setMappingLocations
Hibernate マッピングファイルの場所を、たとえばクラスパスリソース "classpath:example.hbm.xml" として設定します。Spring のリソース抽象化を介してリソースの場所をサポートします。たとえば、アプリケーションコンテキストで実行する場合の "WEB-INF/mappings/example.hbm.xml" などの相対パス。Hibernate XML 構成ファイルからマッピングに追加するか、すべてのマッピングをローカルで指定するために使用できます。
- 関連事項:
setCacheableMappingLocations
キャッシュ可能な Hibernate マッピングファイルの場所を、たとえば Web アプリリソース "/WEB-INF/mapping/example.hbm.xml" として設定します。リソースがファイルシステムで解決できる限り、Spring のリソース抽象化を介して任意のリソースの場所をサポートします。Hibernate XML 構成ファイルからマッピングに追加するか、すべてのマッピングをローカルで指定するために使用できます。
- 関連事項:
setMappingJarLocations
"WEB-INF/lib/example.hbm.jar" のように、Hibernate マッピングリソースを含む jar ファイルの場所を設定します。Hibernate XML 構成ファイルからマッピングに追加するか、すべてのマッピングをローカルで指定するために使用できます。
- 関連事項:
setMappingDirectoryLocations
"WEB-INF/mappings" のように、Hibernate マッピングリソースを含むディレクトリの場所を設定します。Hibernate XML 構成ファイルからマッピングに追加するか、すべてのマッピングをローカルで指定するために使用できます。
- 関連事項:
setEntityInterceptor
データベースに読み書きする前にプロパティ値をインスペクションおよび変更できる Hibernate エンティティインターセプターを設定します。このファクトリによって作成された新しいセッションに適用されます。- 関連事項:
setImplicitNamingStrategy
SessionFactory の Hibernate 5ImplicitNamingStrategyを設定します。- 関連事項:
setPhysicalNamingStrategy
SessionFactory の Hibernate 5PhysicalNamingStrategyを設定します。- 関連事項:
setJtaTransactionManager
Hibernate で使用する SpringJtaTransactionManagerまたは JTATransactionManagerを設定します(存在する場合)。暗黙的にJtaPlatformを設定します。- 関連事項:
setCacheRegionFactory
HibernateRegionFactoryを SessionFactory に使用するように設定します。Spring 管理のRegionFactoryインスタンスを使用できます。メモ: これが設定されている場合、Hibernate 設定では、意味のない二重構成を避けるためにキャッシュプロバイダーを定義しないでください。
- 関連事項:
setMultiTenantConnectionProvider
public void setMultiTenantConnectionProvider(MultiTenantConnectionProvider<?> multiTenantConnectionProvider) SessionFactory に渡されるMultiTenantConnectionProviderを設定します。- 関連事項:
setCurrentTenantIdentifierResolver
public void setCurrentTenantIdentifierResolver(CurrentTenantIdentifierResolver<?> currentTenantIdentifierResolver) SessionFactory に渡されるCurrentTenantIdentifierResolverを設定します。- 関連事項:
setHibernateProperties
"hibernate.dialect" などの Hibernate プロパティを設定します。メモ: Spring 駆動トランザクションを使用する場合は、ここでトランザクションプロバイダーを指定しないでください。また、接続プロバイダーの設定を省略し、代わりに Spring セットの DataSource を使用することをお勧めします。
- 関連事項:
getHibernateProperties
Hibernate プロパティがあれば、それを返します。主に、個々のキーを指定するプロパティパスを介した構成に使用できます。setEntityTypeFilters
エンティティクラスの Spring ベースのスキャン用にカスタム型フィルターを指定します。デフォルトでは、指定されたすべてのパッケージで
@jakarta.persistence.Entity、@jakarta.persistence.Embeddableまたは@jakarta.persistence.MappedSuperclassのアノテーションが付けられたクラスを検索します。- 関連事項:
setAnnotatedClasses
この Hibernate SessionFactory に登録するアノテーション付きエンティティクラスを指定します。- 関連事項:
setAnnotatedPackages
パッケージレベルのアノテーションメタデータが読み取られるアノテーション付きパッケージの名前を指定します。- 関連事項:
setPackagesToScan
クラスパスでエンティティクラスの自動検出を検索するパッケージを指定します。これは、Spring のコンポーネントスキャン機能(ClassPathBeanDefinitionScanner)に類似しています。setBootstrapExecutor
バックグラウンドブートストラップ用の非同期エグゼキュータ (例:SimpleAsyncTaskExecutor) を指定します。SessionFactoryの初期化はバックグラウンドブートストラップモードに切り替わり、Hibernate のブートストラップが完了するのを待つのではなく、SessionFactoryプロキシがインジェクションの目的で直ちに返されます。ただし、SessionFactoryメソッドの最初の実際の呼び出しは、Hibernate のブートストラップが完了するまでブロックされます(それまでに準備ができていない場合)。最大限の利益を得るには、メタデータのイントロスペクションの目的であっても、関連する Bean の init メソッドでの初期のSessionFactory呼び出しを避けてください。6.2 以降、コンテキストリフレッシュが完了する前に Hibernate の初期化が強制され、それまでに非同期ブートストラップが完了するまで待機します。
- 関連事項:
setHibernateIntegrators
適用する 1 つ以上の HibernateIntegrator実装を指定します。これは、内部で構築された
MetadataSourcesインスタンスにのみ適用されます。setMetadataSources(MetadataSources)は、外部で構築されたMetadataSourcesに適用されるインテグレーターを使用して、このような設定を効果的にオーバーライドします。- 関連事項:
setMetadataSources
使用する HibernateMetadataSourcesサービスを指定します (たとえば、既存のものを再利用します)。カスタム Hibernate ブートストラップServiceRegistryも設定される可能性があります。- 関連事項:
getMetadataSources
使用する HibernateMetadataSourcesを決定します。SessionFactoryビルドに使用されるMetadataSourcesインスタンスを初期化および事前入力するために外部から呼び出すこともできます。- 戻り値:
- 使用する MetadataSources (非
null) - 関連事項:
setResourceLoader
Hibernate メタデータに使用する SpringResourceLoaderを指定します。- 次で指定:
- インターフェース
ResourceLoaderAwareのsetResourceLoader - パラメーター:
resourceLoader- 使用する ResourceLoader (非null)- 関連事項:
getResourceLoader
Hibernate メタデータに使用する SpringResourceLoaderを決定します。- 戻り値:
- 使用する ResourceLoader (非
null)
setBeanFactory
含まれているBeanFactoryを受け入れ、可能であれば、それに対応する HibernateBeanContainer統合を登録します。これには SpringConfigurableListableBeanFactoryが必要です。- 次で指定:
- インターフェース
BeanFactoryAwareのsetBeanFactory - パラメーター:
beanFactory- 所有 BeanFactory(非null)。Bean は、ファクトリのメソッドをすぐに呼び出すことができます。- 関連事項:
afterPropertiesSet
インターフェースからコピーされた説明:InitializingBeanすべての Bean プロパティを設定し、BeanFactoryAware、ApplicationContextAwareなどを満たした後、包含BeanFactoryによって呼び出されます。このメソッドにより、Bean インスタンスは、すべての Bean プロパティが設定されたときに、その全体的な構成の検証と最終的な初期化を実行できます。
- 次で指定:
- インターフェース
InitializingBeanのafterPropertiesSet - 例外:
IOExceptionSE
afterSingletonsInstantiated
public void afterSingletonsInstantiated()インターフェースからコピーされた説明:SmartInitializingSingletonシングルトン事前インスタンス化フェーズの終わりに呼び出され、すべての通常のシングルトン Bean がすでに作成されていることを保証します。このメソッド内のListableBeanFactory.getBeansOfType(Class)呼び出しは、ブートストラップ中に偶発的な副作用を引き起こしません。注意 : このコールバックは、
BeanFactoryブートストラップ後にオンデマンドで遅延初期化されたシングルトン Bean ではトリガーされず、他の Bean スコープでもトリガーされません。意図されたブートストラップセマンティクスのみを使用する Bean には慎重に使用してください。- 次で指定:
- インターフェース
SmartInitializingSingletonのafterSingletonsInstantiated
buildSessionFactory
サブクラスはこのメソッドをオーバーライドして、SessionFactory インスタンスのカスタム初期化を実行し、この LocalSessionFactoryBean によって準備された特定の Configuration オブジェクトを介してインスタンスを作成できます。デフォルトの実装では、LocalSessionFactoryBuilder の buildSessionFactory が呼び出されます。カスタム実装では、特定の方法でインスタンスを準備したり (たとえば、カスタム ServiceRegistry を適用したり)、カスタム SessionFactoryImpl サブクラスを使用したりすることができます。
- パラメーター:
sfb- この LocalSessionFactoryBean によって準備された LocalSessionFactoryBuilder- 戻り値:
- SessionFactory インスタンス
- 関連事項:
getConfiguration
SessionFactory の構築に使用される Hibernate 構成オブジェクトを返します。そこに格納されている構成メタデータへのアクセスを許可します(まれに必要)。- 例外:
IllegalStateExceptionSE- Configuration オブジェクトがまだ初期化されていない場合
getObject
インターフェースからコピーされた説明:FactoryBeanこのファクトリによって管理されるオブジェクトのインスタンス(おそらく共有または独立)を返します。BeanFactoryと同様に、これにより、シングルトンとプロトタイプの両方の設計パターンをサポートできます。この FactoryBean が呼び出し時にまだ完全に初期化されていない場合(たとえば、循環参照に関係しているため)、対応する
FactoryBeanNotInitializedExceptionをスローします。FactoryBeans は
nullオブジェクトを返すことができます。Bean ファクトリはこれを通常の値と見なし、この場合はFactoryBeanNotInitializedExceptionをスローしません。ただし、FactoryBean 実装では、必要に応じてFactoryBeanNotInitializedException自体をスローすることが推奨されます。- 次で指定:
- インターフェース
FactoryBean<SessionFactory>のgetObject - 戻り値:
- Bean のインスタンス (
nullにすることができます) - 関連事項:
getObjectType
インターフェースからコピーされた説明:FactoryBeanこの FactoryBean が作成するオブジェクトの型を返します。事前にわからない場合はnullを返します。これにより、たとえばオートワイヤーなどで、オブジェクトをインスタンス化せずに特定の型の Bean を確認できます。
シングルトンオブジェクトを作成する実装の場合、このメソッドはシングルトンの作成を可能な限り回避し、事前に型を推定する必要があります。プロトタイプの場合は、ここで意味のある型を返すことも推奨されます。
このメソッドは、この FactoryBean が完全に初期化される前に呼び出すことができます。初期化中に作成された状態に依存しないでください。もちろん、利用可能な場合はそのような状態を引き続き使用できます。
注意 : オートワイヤーは、ここで
nullを返す FactoryBeans を単に無視します。FactoryBean の現在の状態を使用して、このメソッドを適切に実装することを強くお勧めします。- 次で指定:
- インターフェース
FactoryBean<SessionFactory>のgetObjectType - 戻り値:
- この FactoryBean が作成するオブジェクトの型、または呼び出し時に不明な場合は
null - 関連事項:
getObject
シングルトン SessionFactory または共有 (ステートレス) セッションプロキシのいずれかを返します。- 次で指定:
- インターフェース
SmartFactoryBean<SessionFactory>のgetObject - パラメーター:
type- リクエストされた型- 戻り値:
- このファクトリによって管理される対応するインスタンス、または利用できない場合は
null - 例外:
ExceptionSE- 作成エラーの場合- 関連事項:
supportsType
インターフェースからコピーされた説明:SmartFactoryBeanこのファクトリがリクエストされた型をサポートしているかどうかを判断します。デフォルトでは、
FactoryBean.getObjectType()で示されるように、ファクトリによって公開されるプライマリ型をサポートします。特定のファクトリでは、依存性注入のために追加の型をサポートする場合があります。- 次で指定:
- インターフェース
SmartFactoryBean<SessionFactory>のsupportsType - パラメーター:
type- リクエストされた型- 戻り値:
-
SmartFactoryBean.getObject(Class)が対応するインスタンスを返すことができる場合はtrue、そうでない場合はfalse - 関連事項:
destroy
public void destroy()インターフェースからコピーされた説明:DisposableBeanBean の破棄時に、包含BeanFactoryによって呼び出されます。- 次で指定:
- インターフェース
DisposableBeanのdestroy