クラス LocalSessionFactoryBean

java.lang.ObjectSE
org.springframework.orm.hibernate5.HibernateExceptionTranslator
org.springframework.orm.hibernate5.LocalSessionFactoryBean
実装されたすべてのインターフェース:
AwareBeanFactoryAwareDisposableBeanFactoryBean<SessionFactory>InitializingBeanResourceLoaderAwarePersistenceExceptionTranslator

Hibernate 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 プロバイダーとしてのみ公式にサポートされています。代わりに LocalContainerEntityManagerFactoryBeanJpaTransactionManager を使用してください。

導入:
4.2
作成者:
Juergen Hoeller
関連事項:
  • コンストラクターの詳細

    • LocalSessionFactoryBean

      public LocalSessionFactoryBean()
  • メソッドの詳細

    • setDataSource

      public void setDataSource(DataSourceSE dataSource)
      SessionFactory で使用する DataSource を設定します。設定されている場合、これは Hibernate プロパティの対応する設定をオーバーライドします。

      これが設定されている場合、Hibernate 設定では、無意味な二重構成を回避するために接続プロバイダーを定義しないでください。

    • setConfigLocation

      public void setConfigLocation(Resource configLocation)
      単一の Hibernate XML 構成ファイルの場所を、たとえばクラスパスリソース "classpath:hibernate.cfg.xml" として設定します。

      メモ: 必要なすべてのプロパティとマッピングリソースがこの Bean を介してローカルで指定されている場合は省略できます。

      関連事項:
    • setConfigLocations

      public void setConfigLocations(Resource... configLocations)
      複数の Hibernate XML 構成ファイルの場所を、たとえばクラスパスリソース "classpath:hibernate.cfg.xml、classpath:extension.cfg.xml" として設定します。

      メモ: 必要なすべてのプロパティとマッピングリソースがこの Bean を介してローカルで指定されている場合は省略できます。

      関連事項:
    • setMappingResources

      public void setMappingResources(StringSE... mappingResources)
      "example.hbm.xml" や "mypackage/example.hbm.xml" など、クラスパスにある Hibernate マッピングリソースを設定します。Hibernate XML 構成ファイルのエントリのマッピングに類似しています。より一般的な setMappingLocations メソッドの代替。

      Hibernate XML 構成ファイルからマッピングに追加するか、すべてのマッピングをローカルで指定するために使用できます。

      関連事項:
    • setMappingLocations

      public void setMappingLocations(Resource... mappingLocations)
      Hibernate マッピングファイルの場所を、たとえばクラスパスリソース "classpath:example.hbm.xml" として設定します。Spring のリソース抽象化を介してリソースの場所をサポートします。たとえば、アプリケーションコンテキストで実行する場合の "WEB-INF/mappings/example.hbm.xml" などの相対パス。

      Hibernate XML 構成ファイルからマッピングに追加するか、すべてのマッピングをローカルで指定するために使用できます。

      関連事項:
    • setCacheableMappingLocations

      public void setCacheableMappingLocations(Resource... cacheableMappingLocations)
      キャッシュ可能な Hibernate マッピングファイルの場所を、たとえば Web アプリリソース "/WEB-INF/mapping/example.hbm.xml" として設定します。リソースがファイルシステムで解決できる限り、Spring のリソース抽象化を介して任意のリソースの場所をサポートします。

      Hibernate XML 構成ファイルからマッピングに追加するか、すべてのマッピングをローカルで指定するために使用できます。

      関連事項:
    • setMappingJarLocations

      public void setMappingJarLocations(Resource... mappingJarLocations)
      "WEB-INF/lib/example.hbm.jar" のように、Hibernate マッピングリソースを含む jar ファイルの場所を設定します。

      Hibernate XML 構成ファイルからマッピングに追加するか、すべてのマッピングをローカルで指定するために使用できます。

      関連事項:
    • setMappingDirectoryLocations

      public void setMappingDirectoryLocations(Resource... mappingDirectoryLocations)
      "WEB-INF/mappings" のように、Hibernate マッピングリソースを含むディレクトリの場所を設定します。

      Hibernate XML 構成ファイルからマッピングに追加するか、すべてのマッピングをローカルで指定するために使用できます。

      関連事項:
    • setEntityInterceptor

      public void setEntityInterceptor(Interceptor entityInterceptor)
      データベースに読み書きする前にプロパティ値をインスペクションおよび変更できる Hibernate エンティティインターセプターを設定します。このファクトリによって作成された新しいセッションに適用されます。
      関連事項:
    • setImplicitNamingStrategy

      public void setImplicitNamingStrategy(ImplicitNamingStrategy implicitNamingStrategy)
      SessionFactory の Hibernate 5 ImplicitNamingStrategy を設定します。
      関連事項:
    • setPhysicalNamingStrategy

      public void setPhysicalNamingStrategy(PhysicalNamingStrategy physicalNamingStrategy)
      SessionFactory の Hibernate 5 PhysicalNamingStrategy を設定します。
      関連事項:
    • setJtaTransactionManager

      public void setJtaTransactionManager(ObjectSE jtaTransactionManager)
      Hibernate で使用する Spring JtaTransactionManager または JTA TransactionManagerEE(存在する場合)を設定します。JtaPlatform を暗黙的にセットアップします。
      関連事項:
    • setCacheRegionFactory

      public void setCacheRegionFactory(RegionFactory cacheRegionFactory)
      Hibernate RegionFactory を SessionFactory に使用するように設定します。Spring 管理の RegionFactory インスタンスを使用できます。

      メモ: これが設定されている場合、Hibernate 設定では、意味のない二重構成を避けるためにキャッシュプロバイダーを定義しないでください。

      導入:
      5.1
      関連事項:
    • setMultiTenantConnectionProvider

      public void setMultiTenantConnectionProvider(MultiTenantConnectionProvider multiTenantConnectionProvider)
      SessionFactory に渡される MultiTenantConnectionProvider を設定します。
      導入:
      4.3
      関連事項:
    • setCurrentTenantIdentifierResolver

      public void setCurrentTenantIdentifierResolver(CurrentTenantIdentifierResolver currentTenantIdentifierResolver)
      SessionFactory に渡される CurrentTenantIdentifierResolver を設定します。
      関連事項:
    • setHibernateProperties

      public void setHibernateProperties(PropertiesSE hibernateProperties)
      "hibernate.dialect" などの Hibernate プロパティを設定します。

      メモ: Spring 駆動トランザクションを使用する場合は、ここでトランザクションプロバイダーを指定しないでください。また、接続プロバイダーの設定を省略し、代わりに Spring セットの DataSource を使用することをお勧めします。

      関連事項:
    • getHibernateProperties

      public PropertiesSE getHibernateProperties()
      Hibernate プロパティがあれば、それを返します。主に、個々のキーを指定するプロパティパスを介した構成に使用できます。
    • setEntityTypeFilters

      public void setEntityTypeFilters(TypeFilter... entityTypeFilters)
      エンティティクラスの Spring ベースのスキャン用にカスタム型フィルターを指定します。

      デフォルトでは、指定されたすべてのパッケージで @jakarta.persistence.Entity@jakarta.persistence.Embeddable または @jakarta.persistence.MappedSuperclass のアノテーションが付けられたクラスを検索します。

      関連事項:
    • setAnnotatedClasses

      public void setAnnotatedClasses(ClassSE<?>... annotatedClasses)
      この Hibernate SessionFactory に登録するアノテーション付きエンティティクラスを指定します。
      関連事項:
    • setAnnotatedPackages

      public void setAnnotatedPackages(StringSE... annotatedPackages)
      パッケージレベルのアノテーションメタデータが読み取られるアノテーション付きパッケージの名前を指定します。
      関連事項:
    • setPackagesToScan

      public void setPackagesToScan(StringSE... packagesToScan)
      クラスパスでエンティティクラスの自動検出を検索するパッケージを指定します。これは、Spring のコンポーネントスキャン機能(ClassPathBeanDefinitionScanner)に類似しています。
    • setBootstrapExecutor

      public void setBootstrapExecutor(AsyncTaskExecutor bootstrapExecutor)
      バックグラウンドブートストラップ用の非同期エグゼキューターを指定します。SimpleAsyncTaskExecutor

      SessionFactory の初期化はバックグラウンドブートストラップモードに切り替わり、Hibernate のブートストラップが完了するのを待つのではなく、SessionFactory プロキシがインジェクションの目的で直ちに返されます。ただし、SessionFactory メソッドの最初の実際の呼び出しは、Hibernate のブートストラップが完了するまでブロックされます(それまでに準備ができていない場合)。最大限の利益を得るには、メタデータのイントロスペクションの目的であっても、関連する Bean の init メソッドでの初期の SessionFactory 呼び出しを避けてください。

      導入:
      4.3
      関連事項:
    • setHibernateIntegrators

      public void setHibernateIntegrators(Integrator... hibernateIntegrators)
      適用する 1 つ以上の Hibernate Integrator 実装を指定します。

      これは、内部で構築された MetadataSources インスタンスにのみ適用されます。setMetadataSources(org.hibernate.boot.MetadataSources) は、外部で構築された MetadataSources に適用されるインテグレーターを使用して、このような設定を効果的にオーバーライドします。

      導入:
      5.1
      関連事項:
    • setMetadataSources

      public void setMetadataSources(MetadataSources metadataSources)
      使用する Hibernate MetadataSources サービスを指定します(既存のサービスを再利用するなど)。カスタム Hibernate ブートストラップ ServiceRegistry も含まれている可能性があります。
      導入:
      4.3
      関連事項:
    • getMetadataSources

      public MetadataSources getMetadataSources()
      使用する Hibernate MetadataSources を決定します。

      SessionFactory ビルドに使用される MetadataSources インスタンスを初期化および事前入力するために外部から呼び出すこともできます。

      戻り値:
      使用する MetadataSources (非 null)
      導入:
      4.3
      関連事項:
    • setResourceLoader

      public void setResourceLoader(ResourceLoader resourceLoader)
      Hibernate メタデータに使用する Spring ResourceLoader を指定します。
      次で指定:
      インターフェース ResourceLoaderAwaresetResourceLoader 
      パラメーター:
      resourceLoader - 使用する ResourceLoader (非 null)
      関連事項:
    • getResourceLoader

      public ResourceLoader getResourceLoader()
      Hibernate メタデータに使用する Spring ResourceLoader を決定します。
      戻り値:
      使用する ResourceLoader (非 null)
      導入:
      4.3
    • setBeanFactory

      public void setBeanFactory(BeanFactory beanFactory)
      含まれている BeanFactory を受け入れ、可能であれば、それに対応する Hibernate BeanContainer 統合を登録します。これには Spring ConfigurableListableBeanFactory が必要です。
      次で指定:
      インターフェース BeanFactoryAwaresetBeanFactory 
      パラメーター:
      beanFactory - 所有 BeanFactory(非 null)。Bean は、ファクトリのメソッドをすぐに呼び出すことができます。
      導入:
      5.1
      関連事項:
    • afterPropertiesSet

      public void afterPropertiesSet() throws IOExceptionSE
      インターフェースからコピーされた説明: InitializingBean
      すべての Bean プロパティを設定し、BeanFactoryAwareApplicationContextAware などを満たした後、包含 BeanFactory によって呼び出されます。

      このメソッドにより、Bean インスタンスは、すべての Bean プロパティが設定されたときに、その全体的な構成の検証と最終的な初期化を実行できます。

      次で指定:
      インターフェース InitializingBeanafterPropertiesSet 
      例外:
      IOExceptionSE
    • buildSessionFactory

      protected SessionFactory buildSessionFactory(LocalSessionFactoryBuilder sfb)
      サブクラスはこのメソッドをオーバーライドして、SessionFactory インスタンスのカスタム初期化を実行し、この LocalSessionFactoryBean によって準備された特定の Configuration オブジェクトを介してインスタンスを作成できます。

      デフォルトの実装は、LocalSessionFactoryBuilder の buildSessionFactory を呼び出します。カスタム実装では、特定の方法でインスタンスを準備するか(カスタム ServiceRegistry を適用するなど)、カスタム SessionFactoryImpl サブクラスを使用できます。

      パラメーター:
      sfb - この LocalSessionFactoryBean によって準備された LocalSessionFactoryBuilder
      戻り値:
      SessionFactory インスタンス
      関連事項:
    • getConfiguration

      public final Configuration getConfiguration()
      SessionFactory の構築に使用される Hibernate 構成オブジェクトを返します。そこに格納されている構成メタデータへのアクセスを許可します(まれに必要)。
      例外:
      IllegalStateExceptionSE - Configuration オブジェクトがまだ初期化されていない場合
    • getObject

      @Nullable public SessionFactory getObject()
      インターフェースからコピーされた説明: FactoryBean
      このファクトリによって管理されるオブジェクトのインスタンス(おそらく共有または独立)を返します。

      BeanFactory と同様に、これにより、シングルトンとプロトタイプの両方のデザインパターンをサポートできます。

      この FactoryBean が呼び出し時にまだ完全に初期化されていない場合(たとえば、循環参照に関係しているため)、対応する FactoryBeanNotInitializedException をスローします。

      Spring 2.0 以降、FactoryBeans は null オブジェクトを返すことができます。ファクトリはこれを通常の値として使用します。この場合、FactoryBeanNotInitializedException はスローされません。FactoryBean の実装では、必要に応じて FactoryBeanNotInitializedException 自体をすぐにスローすることをお勧めします。

      次で指定:
      インターフェース FactoryBean<SessionFactory>getObject 
      戻り値:
      Bean のインスタンス (null にすることができます)
      関連事項:
    • getObjectType

      public ClassSE<?> 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 によって呼び出されます。
      次で指定:
      インターフェース DisposableBeandestroy