クラス OpenEntityManagerInViewFilter
- 実装済みのインターフェース一覧:
jakarta.servlet.Filter, Aware, BeanNameAware, DisposableBean, InitializingBean, EnvironmentAware, EnvironmentCapable, ServletContextAware
このフィルターは、トランザクションマネージャーによって自動検出される現在のスレッドを介して JPA EntityManagers を利用できるようにします。JpaTransactionManager または JtaTransactionManager を介したサービスレイヤートランザクション、および非トランザクションの読み取り専用実行に適しています。
Spring のルート Web アプリケーションコンテキストで EntityManagerFactory を検索します。web.xml で "entityManagerFactoryBeanName" フィルター init-param をサポートします。デフォルトの Bean 名は "entityManagerFactory" です。代わりに、"persistenceUnitName" init-param を使用すると、論理ユニット名 (persistence.xml で指定) による取得が可能になります。
- 導入:
- 2.0
- 作成者:
- Juergen Hoeller
- 関連事項:
フィールド概要
フィールドクラス OncePerRequestFilter から継承されたフィールド
ALREADY_FILTERED_SUFFIXクラス GenericFilterBean から継承されたフィールド
loggerコンストラクター概要
コンストラクター方法の概要
修飾子と型メソッド説明protected jakarta.persistence.EntityManagercreateEntityManager(jakarta.persistence.EntityManagerFactory emf) リクエストにバインドされる JPA EntityManager を作成します。protected voiddoFilterInternal(jakarta.servlet.http.HttpServletRequest request, jakarta.servlet.http.HttpServletResponse response, jakarta.servlet.FilterChain filterChain) doFilterと同じ契約ですが、単一のリクエストスレッド内のリクエストごとに 1 回だけ呼び出されることが保証されています。Spring のルートアプリケーションコンテキストから取得する EntityManagerFactory の Bean 名を返します。EntityManagerFactory にアクセスする永続性ユニットの名前を返します(存在する場合)。protected jakarta.persistence.EntityManagerFactoryこのフィルターが使用する EntityManagerFactory を調べます。protected jakarta.persistence.EntityManagerFactorylookupEntityManagerFactory(jakarta.servlet.http.HttpServletRequest request) 現在の HTTP リクエストを引数として、このフィルターが使用する EntityManagerFactory を検索します。voidsetEntityManagerFactoryBeanName(@Nullable StringSE entityManagerFactoryBeanName) EntityManagerFactory の Bean 名を設定して、Spring のルートアプリケーションコンテキストから取得します。voidsetPersistenceUnitName(@Nullable StringSE persistenceUnitName) EntityManagerFactory にアクセスする永続性ユニットの名前を設定します。protected booleanフィルターが開いたEntityManagerを非同期にディスパッチされた各スレッドに再バインドし、最後の非同期ディスパッチまで閉じるのを延期するように、"false" を返します。protected booleanフィルターが各エラーディスパッチにEntityManagerを提供できるように、"false" を返します。クラス OncePerRequestFilter から継承されたメソッド
doFilter, doFilterNestedErrorDispatch, getAlreadyFilteredAttributeName, isAsyncDispatch, isAsyncStarted, shouldNotFilter
フィールドの詳細
DEFAULT_ENTITY_MANAGER_FACTORY_BEAN_NAME
デフォルトの EntityManagerFactory Bean 名: "entityManagerFactory"。"persistenceUnitName" パラメーターが指定されていない場合にのみ適用されます。- 関連事項:
コンストラクターの詳細
OpenEntityManagerInViewFilter
public OpenEntityManagerInViewFilter()
方法の詳細
setEntityManagerFactoryBeanName
getEntityManagerFactoryBeanName
setPersistenceUnitName
EntityManagerFactory にアクセスする永続性ユニットの名前を設定します。これは、Bean 名で EntityManagerFactory を指定する代わりに、永続ユニット名で解決する方法です。Bean 名と永続ユニット名が指定されていない場合は、デフォルトの Bean 名 "entityManagerFactory" に対して Bean が存在するかどうかを確認します。存在しない場合は、型 EntityManagerFactory の単一の一意の Bean を検索して、デフォルトの EntityManagerFactory を取得します。
- 関連事項:
getPersistenceUnitName
shouldNotFilterAsyncDispatch
protected boolean shouldNotFilterAsyncDispatch()フィルターが開いたEntityManagerを非同期にディスパッチされた各スレッドに再バインドし、最後の非同期ディスパッチまで閉じるのを延期するように、"false" を返します。- オーバーライド:
- クラス
OncePerRequestFilterのshouldNotFilterAsyncDispatch
shouldNotFilterErrorDispatch
protected boolean shouldNotFilterErrorDispatch()フィルターが各エラーディスパッチにEntityManagerを提供できるように、"false" を返します。- オーバーライド:
- クラス
OncePerRequestFilterのshouldNotFilterErrorDispatch
doFilterInternal
protected void doFilterInternal(jakarta.servlet.http.HttpServletRequest request, jakarta.servlet.http.HttpServletResponse response, jakarta.servlet.FilterChain filterChain) throws jakarta.servlet.ServletException, IOExceptionSE クラスからコピーされた説明:OncePerRequestFilterdoFilterと同じ契約ですが、単一のリクエストスレッド内のリクエストごとに 1 回だけ呼び出されることが保証されています。詳細については、OncePerRequestFilter.shouldNotFilterAsyncDispatch()を参照してください。デフォルトの ServletRequest および ServletResponse の代わりに、HttpServletRequest および HttpServletResponse 引数を提供します。
- 次で指定:
- クラス
OncePerRequestFilterのdoFilterInternal - 例外:
jakarta.servlet.ServletExceptionIOExceptionSE
lookupEntityManagerFactory
protected jakarta.persistence.EntityManagerFactory lookupEntityManagerFactory(jakarta.servlet.http.HttpServletRequest request) 現在の HTTP リクエストを引数として、このフィルターが使用する EntityManagerFactory を検索します。デフォルトの実装は、引数なしで
lookupEntityManagerFactoryに委譲し、取得された EntityManagerFactory 参照をキャッシュします。- 戻り値:
- 使用する EntityManagerFactory
- 関連事項:
lookupEntityManagerFactory
protected jakarta.persistence.EntityManagerFactory lookupEntityManagerFactory()このフィルターが使用する EntityManagerFactory を調べます。デフォルトの実装では、Spring のルートアプリケーションコンテキストで指定された名前の Bean を探します。
- 戻り値:
- 使用する EntityManagerFactory
- 関連事項:
createEntityManager
protected jakarta.persistence.EntityManager createEntityManager(jakarta.persistence.EntityManagerFactory emf) リクエストにバインドされる JPA EntityManager を作成します。サブクラスでオーバーライドできます。
- パラメーター:
emf- 使用する EntityManagerFactory- 関連事項: