クラス LocalSessionFactoryBean
- 実装されたすべてのインターフェース:
Aware
、BeanFactoryAware
、DisposableBean
、FactoryBean<SessionFactory>
、InitializingBean
、SmartInitializingSingleton
、ResourceLoaderAware
、PersistenceExceptionTranslator
SessionFactory
を作成する FactoryBean
。これは、Spring アプリケーションコンテキストで共有 Hibernate SessionFactory を設定する通常の方法です。次に、SessionFactory を依存性注入を介してデータアクセスオブジェクトに渡すことができます。Spring Framework 6.0 以降、Hibernate ORM 5.5/5.6 と互換性があります。この Hibernate 固有の LocalSessionFactoryBean
は、一般的な JPA の目的で LocalContainerEntityManagerFactoryBean
の即時代替として使用できます。Hibernate SessionFactory
は JPA EntityManagerFactory
インターフェースもネイティブに公開し、Hibernate BeanContainer
統合はすぐに登録されます。HibernateTransactionManager
と組み合わせると、同じトランザクション内で JPA アクセスコードとネイティブ Hibernate アクセスコードを混在させることが自然に可能になります。
NOTE: Hibernate ORM 6.x は、JPA プロバイダーとしてのみ公式にサポートされています。代わりに LocalContainerEntityManagerFactoryBean
と JpaTransactionManager
を使用してください。
フィールドサマリー
インターフェース org.springframework.beans.factory.FactoryBean から継承されたフィールド
OBJECT_TYPE_ATTRIBUTE
コンストラクターのサマリー
方法の概要
修飾子と型メソッド説明void
void
シングルトン事前インスタンス化フェーズの終わりに呼び出され、すべての通常のシングルトン Bean がすでに作成されていることを保証します。protected SessionFactory
サブクラスはこのメソッドをオーバーライドして、SessionFactory インスタンスのカスタム初期化を実行し、この LocalSessionFactoryBean によって準備された特定の Configuration オブジェクトを介してインスタンスを作成できます。void
destroy()
Bean の破棄時に、包含BeanFactory
によって呼び出されます。final Configuration
SessionFactory の構築に使用される Hibernate 構成オブジェクトを返します。Hibernate プロパティを返します(ある場合)。使用する HibernateMetadataSources
を決定します。このファクトリによって管理されるオブジェクトのインスタンス(おそらく共有または独立)を返します。ClassSE<?>
この FactoryBean が作成するオブジェクトの型、または事前に不明な場合はnull
を返します。Hibernate メタデータに使用する SpringResourceLoader
を決定します。boolean
このファクトリによって管理されるオブジェクトはシングルトンですか? つまり、FactoryBean.getObject()
は常に同じオブジェクト(キャッシュ可能な参照)を返しますか?void
setAnnotatedClasses
(ClassSE<?>... annotatedClasses) この Hibernate SessionFactory に登録するアノテーション付きエンティティクラスを指定します。void
setAnnotatedPackages
(StringSE... annotatedPackages) パッケージレベルのアノテーションメタデータが読み取られるアノテーション付きパッケージの名前を指定します。void
setBeanFactory
(BeanFactory beanFactory) 含まれているBeanFactory
を受け入れ、可能な場合は対応する HibernateBeanContainer
統合を登録します。void
setBootstrapExecutor
(AsyncTaskExecutor bootstrapExecutor) バックグラウンドブートストラップ用の非同期エグゼキュータ (例:SimpleAsyncTaskExecutor
) を指定します。void
setCacheableMappingLocations
(Resource... cacheableMappingLocations) キャッシュ可能な Hibernate マッピングファイルの場所を、たとえば Web アプリリソース "/WEB-INF/mapping/example.hbm.xml" として設定します。void
setCacheRegionFactory
(RegionFactory cacheRegionFactory) HibernateRegionFactory
を SessionFactory に使用するように設定します。void
setConfigLocation
(Resource configLocation) 単一の Hibernate XML 構成ファイルの場所を、たとえばクラスパスリソース "classpath:hibernate.cfg.xml" として設定します。void
setConfigLocations
(Resource... configLocations) 複数の Hibernate XML 構成ファイルの場所を、たとえばクラスパスリソース "classpath:hibernate.cfg.xml、classpath:extension.cfg.xml" として設定します。void
setCurrentTenantIdentifierResolver
(CurrentTenantIdentifierResolver currentTenantIdentifierResolver) SessionFactory に渡されるCurrentTenantIdentifierResolver
を設定します。void
setDataSource
(DataSourceSE dataSource) SessionFactory で使用する DataSource を設定します。void
setEntityInterceptor
(Interceptor entityInterceptor) データベースへの書き込みおよびデータベースからの読み取りを行う前に、プロパティ値をインスペクションおよび変更できる Hibernate エンティティインターセプターを設定します。void
setEntityTypeFilters
(TypeFilter... entityTypeFilters) エンティティクラスの Spring ベースのスキャン用にカスタム型フィルターを指定します。void
setHibernateIntegrators
(Integrator... hibernateIntegrators) 適用する 1 つ以上の HibernateIntegrator
実装を指定します。void
setHibernateProperties
(PropertiesSE hibernateProperties) "hibernate.dialect" などの Hibernate プロパティを設定します。void
setImplicitNamingStrategy
(ImplicitNamingStrategy implicitNamingStrategy) SessionFactory の Hibernate 5ImplicitNamingStrategy
を設定します。void
setJtaTransactionManager
(ObjectSE jtaTransactionManager) SpringJtaTransactionManager
または JTATransactionManager
EE を Hibernate で使用するように設定します(ある場合)。void
setMappingDirectoryLocations
(Resource... mappingDirectoryLocations) "WEB-INF/mappings" のように、Hibernate マッピングリソースを含むディレクトリの場所を設定します。void
setMappingJarLocations
(Resource... mappingJarLocations) "WEB-INF/lib/example.hbm.jar" のように、Hibernate マッピングリソースを含む jar ファイルの場所を設定します。void
setMappingLocations
(Resource... mappingLocations) Hibernate マッピングファイルの場所を、たとえばクラスパスリソース "classpath:example.hbm.xml" として設定します。void
setMappingResources
(StringSE... mappingResources) "example.hbm.xml" や "mypackage/example.hbm.xml" など、クラスパスにある Hibernate マッピングリソースを設定します。void
setMetadataSources
(MetadataSources metadataSources) 使用する HibernateMetadataSources
サービスを指定します (たとえば、既存のものを再利用します)。カスタム Hibernate ブートストラップServiceRegistry
も設定される可能性があります。void
setMultiTenantConnectionProvider
(MultiTenantConnectionProvider multiTenantConnectionProvider) SessionFactory に渡されるMultiTenantConnectionProvider
を設定します。void
setPackagesToScan
(StringSE... packagesToScan) クラスパスでエンティティクラスの自動検出を検索するパッケージを指定します。void
setPhysicalNamingStrategy
(PhysicalNamingStrategy physicalNamingStrategy) SessionFactory の Hibernate 5PhysicalNamingStrategy
を設定します。void
setResourceLoader
(ResourceLoader resourceLoader) Hibernate メタデータに使用する SpringResourceLoader
を指定します。クラス org.springframework.orm.hibernate5.HibernateExceptionTranslator から継承されたメソッド
convertHibernateAccessException, setJdbcExceptionTranslator, translateExceptionIfPossible
コンストラクターの詳細
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
EE(存在する場合)を設定します。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(org.hibernate.boot.MetadataSources)
は、外部で構築されたMetadataSources
に適用されるインテグレーターを使用して、このような設定を効果的にオーバーライドします。setMetadataSources
使用する HibernateMetadataSources
サービスを指定します (たとえば、既存のものを再利用します)。カスタム Hibernate ブートストラップServiceRegistry
も設定される可能性があります。getMetadataSources
使用する HibernateMetadataSources
を決定します。SessionFactory
ビルドに使用されるMetadataSources
インスタンスを初期化および事前入力するために外部から呼び出すこともできます。- 戻り値:
- 使用する MetadataSources (非
null
) - 導入:
- 4.3
- 関連事項:
setResourceLoader
Hibernate メタデータに使用する SpringResourceLoader
を指定します。- 次で指定:
- インターフェース
ResourceLoaderAware
のsetResourceLoader
- パラメーター:
resourceLoader
- 使用する ResourceLoader (非null
)- 関連事項:
getResourceLoader
Hibernate メタデータに使用する SpringResourceLoader
を決定します。- 戻り値:
- 使用する ResourceLoader (非
null
) - 導入:
- 4.3
setBeanFactory
含まれているBeanFactory
を受け入れ、可能であれば、それに対応する HibernateBeanContainer
統合を登録します。これには SpringConfigurableListableBeanFactory
が必要です。- 次で指定:
- インターフェース
BeanFactoryAware
のsetBeanFactory
- パラメーター:
beanFactory
- 所有 BeanFactory(非null
)。Bean は、ファクトリのメソッドをすぐに呼び出すことができます。- 導入:
- 5.1
- 関連事項:
afterPropertiesSet
インターフェースからコピーされた説明:InitializingBean
すべての Bean プロパティを設定し、BeanFactoryAware
、ApplicationContextAware
などを満たした後、包含BeanFactory
によって呼び出されます。このメソッドにより、Bean インスタンスは、すべての Bean プロパティが設定されたときに、その全体的な構成の検証と最終的な初期化を実行できます。
- 次で指定:
- インターフェース
InitializingBean
のafterPropertiesSet
- 例外:
IOExceptionSE
afterSingletonsInstantiated
public void afterSingletonsInstantiated()インターフェースからコピーされた説明:SmartInitializingSingleton
シングルトン事前インスタンス化フェーズの終わりに呼び出され、すべての通常のシングルトン Bean がすでに作成されていることを保証します。このメソッド内のListableBeanFactory.getBeansOfType(java.lang.Class<T>)
呼び出しは、ブートストラップ中に偶発的な副作用を引き起こしません。注意 : このコールバックは、
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
- 関連事項:
isSingleton
public boolean isSingleton()インターフェースからコピーされた説明:FactoryBean
このファクトリによって管理されるオブジェクトはシングルトンですか? つまり、FactoryBean.getObject()
は常に同じオブジェクト(キャッシュ可能な参照)を返しますか?注意 : FactoryBean がシングルトンオブジェクトを保持していることを示している場合、
getObject()
から返されたオブジェクトは、所有する BeanFactory によってキャッシュされる可能性があります。FactoryBean が常に同じ参照を公開しない限り、true
を返さないでください。FactoryBean 自体のシングルトンステータスは、通常、所有する BeanFactory によって提供されます。通常、そこではシングルトンとして定義する必要があります。
注意 :
false
を返すこのメソッドは、返されるオブジェクトが独立したインスタンスであることを必ずしも示しません。拡張SmartFactoryBean
インターフェースの実装は、SmartFactoryBean.isPrototype()
メソッドを通じて独立したインスタンスを明示的に示す場合があります。この拡張インターフェースを実装しないプレーンなFactoryBean
実装は、isSingleton()
実装がfalse
を返す場合、常に独立したインスタンスを返すと単純に想定されます。FactoryBean
は通常シングルトンインスタンスを管理するため、デフォルトの実装ではtrue
が返されます。- 次で指定:
- インターフェース
FactoryBean<SessionFactory>
のisSingleton
- 戻り値:
- 公開されたオブジェクトがシングルトンかどうか
- 関連事項:
destroy
public void destroy()インターフェースからコピーされた説明:DisposableBean
Bean の破棄時に、包含BeanFactory
によって呼び出されます。- 次で指定:
- インターフェース
DisposableBean
のdestroy