クラス LocalSessionFactoryBean
- 実装されているすべてのインターフェース:
Aware、BeanFactoryAware、DisposableBean、FactoryBean<SessionFactory>、InitializingBean、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コンストラクターの概要
コンストラクターメソッドのサマリー
修飾子と型メソッド説明voidprotected SessionFactoryサブクラスはこのメソッドをオーバーライドして、SessionFactory インスタンスのカスタム初期化を実行し、この LocalSessionFactoryBean によって準備された特定の Configuration オブジェクトを介してインスタンスを作成できます。voiddestroy()Bean の破棄時に、包含BeanFactoryによって呼び出されます。final ConfigurationSessionFactory の構築に使用される Hibernate 構成オブジェクトを返します。Hibernate プロパティを返します(ある場合)。使用する HibernateMetadataSourcesを決定します。このファクトリによって管理されるオブジェクトのインスタンス(おそらく共有または独立)を返します。ClassSE<?>この FactoryBean が作成するオブジェクトの型を返します。事前にわからない場合はnullを返します。Hibernate メタデータに使用する SpringResourceLoaderを決定します。booleanこのファクトリによって管理されるオブジェクトはシングルトンですか? つまり、FactoryBean.getObject()は常に同じオブジェクト(キャッシュ可能な参照)を返しますか?voidsetAnnotatedClasses(ClassSE<?>... annotatedClasses) この Hibernate SessionFactory に登録するアノテーション付きエンティティクラスを指定します。voidsetAnnotatedPackages(StringSE... annotatedPackages) パッケージレベルのアノテーションメタデータが読み取られるアノテーション付きパッケージの名前を指定します。voidsetBeanFactory(BeanFactory beanFactory) 含まれているBeanFactoryを受け入れ、可能な場合は対応する HibernateBeanContainer統合を登録します。voidsetBootstrapExecutor(AsyncTaskExecutor bootstrapExecutor) バックグラウンドブートストラップ用の非同期エグゼキューターを指定します。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) SpringJtaTransactionManagerまたは JTATransactionManagerEE を Hibernate で使用するように設定します(ある場合)。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サービスを指定します(例:voidsetMultiTenantConnectionProvider(MultiTenantConnectionProvider multiTenantConnectionProvider) SessionFactory に渡されるMultiTenantConnectionProviderを設定します。voidsetPackagesToScan(StringSE... packagesToScan) クラスパスでエンティティクラスの自動検出を検索するパッケージを指定します。voidsetPhysicalNamingStrategy(PhysicalNamingStrategy physicalNamingStrategy) SessionFactory の Hibernate 5PhysicalNamingStrategyを設定します。voidsetResourceLoader(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または JTATransactionManagerEE(存在する場合)を設定します。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呼び出しを避けてください。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
buildSessionFactory
サブクラスはこのメソッドをオーバーライドして、SessionFactory インスタンスのカスタム初期化を実行し、この LocalSessionFactoryBean によって準備された特定の Configuration オブジェクトを介してインスタンスを作成できます。デフォルトの実装では、LocalSessionFactoryBuilder の buildSessionFactory が呼び出されます。カスタム実装では、特定の方法でインスタンスを準備したり (カスタム ServiceRegistry を適用するなど)、カスタム SessionFactoryImpl サブクラスを使用したりすることができます。
- パラメーター:
sfb- この LocalSessionFactoryBean によって準備された LocalSessionFactoryBuilder- 戻り値:
- SessionFactory インスタンス
- 関連事項:
getConfiguration
SessionFactory の構築に使用される Hibernate 構成オブジェクトを返します。そこに格納されている構成メタデータへのアクセスを許可します(まれに必要)。- 例外:
IllegalStateExceptionSE- Configuration オブジェクトがまだ初期化されていない場合
getObject
インターフェースからコピーされた説明:FactoryBeanこのファクトリによって管理されるオブジェクトのインスタンス(おそらく共有または独立)を返します。BeanFactoryと同様に、これにより、シングルトンとプロトタイプの両方のデザインパターンをサポートできます。この FactoryBean が呼び出し時にまだ完全に初期化されていない場合(たとえば、循環参照に関係しているため)、対応する
FactoryBeanNotInitializedExceptionをスローします。Spring 2.0 以降、FactoryBeans は
nullオブジェクトを返すことができます。ファクトリはこれを通常の値として使用します。この場合、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()インターフェースからコピーされた説明:DisposableBeanBean の破棄時に、包含BeanFactoryによって呼び出されます。- 次で指定:
- インターフェース
DisposableBeanのdestroy