クラス OpenEntityManagerInViewFilter
- 実装されたすべてのインターフェース:
FilterEE
、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
- 関連事項:
フィールドサマリー
クラス org.springframework.web.filter.OncePerRequestFilter から継承されたフィールド
ALREADY_FILTERED_SUFFIX
クラス org.springframework.web.filter.GenericFilterBean から継承されたフィールド
logger
コンストラクターのサマリー
メソッドのサマリー
修飾子と型メソッド説明protected EntityManagerEE
リクエストにバインドされる JPA EntityManager を作成します。protected void
doFilterInternal
(HttpServletRequestEE request, HttpServletResponseEE response, FilterChainEE filterChain) doFilter
と同じ契約ですが、単一のリクエストスレッド内のリクエストごとに 1 回だけ呼び出されることが保証されています。protected StringSE
Spring のルートアプリケーションコンテキストから取得する EntityManagerFactory の Bean 名を返します。protected StringSE
EntityManagerFactory にアクセスする永続性ユニットの名前を返します(存在する場合)。protected EntityManagerFactoryEE
このフィルターが使用する EntityManagerFactory を調べます。protected EntityManagerFactoryEE
現在の HTTP リクエストを引数として、このフィルターが使用する EntityManagerFactory を検索します。void
setEntityManagerFactoryBeanName
(StringSE entityManagerFactoryBeanName) EntityManagerFactory の Bean 名を設定して、Spring のルートアプリケーションコンテキストから取得します。void
setPersistenceUnitName
(StringSE persistenceUnitName) EntityManagerFactory にアクセスする永続性ユニットの名前を設定します。protected boolean
フィルターが開いたEntityManager
を非同期にディスパッチされた各スレッドに再バインドし、最後の非同期ディスパッチまで閉じるのを延期するように、"false" を返します。protected boolean
フィルターが各エラーディスパッチにEntityManager
を提供できるように、"false" を返します。クラス org.springframework.web.filter.OncePerRequestFilter から継承されたメソッド
doFilter, doFilterNestedErrorDispatch, getAlreadyFilteredAttributeName, isAsyncDispatch, isAsyncStarted, shouldNotFilter
クラス org.springframework.web.filter.GenericFilterBean から継承されたメソッド
addRequiredProperty, afterPropertiesSet, createEnvironment, destroy, getEnvironment, getFilterConfig, getFilterName, getServletContext, init, initBeanWrapper, initFilterBean, setBeanName, setEnvironment, setServletContext
フィールドの詳細
DEFAULT_ENTITY_MANAGER_FACTORY_BEAN_NAME
デフォルトの EntityManagerFactory Bean 名: "entityManagerFactory"。"persistenceUnitName" パラメーターが指定されていない場合にのみ適用されます。
コンストラクターの詳細
OpenEntityManagerInViewFilter
public OpenEntityManagerInViewFilter()
メソッドの詳細
setEntityManagerFactoryBeanName
EntityManagerFactory の Bean 名を設定して、Spring のルートアプリケーションコンテキストから取得します。デフォルトは "entityManagerFactory" です。このデフォルトは、"persistenceUnitName" パラメーターが指定されていない場合にのみ適用されることに注意してください。
getEntityManagerFactoryBeanName
Spring のルートアプリケーションコンテキストから取得する EntityManagerFactory の Bean 名を返します。setPersistenceUnitName
EntityManagerFactory にアクセスする永続性ユニットの名前を設定します。これは、Bean 名で EntityManagerFactory を指定する代わりに、永続ユニット名で解決する方法です。Bean 名と永続ユニット名が指定されていない場合は、デフォルトの Bean 名 "entityManagerFactory" に対して Bean が存在するかどうかを確認します。存在しない場合は、型 EntityManagerFactory の単一の一意の Bean を検索して、デフォルトの EntityManagerFactory を取得します。
getPersistenceUnitName
EntityManagerFactory にアクセスする永続性ユニットの名前を返します(存在する場合)。shouldNotFilterAsyncDispatch
protected boolean shouldNotFilterAsyncDispatch()フィルターが開いたEntityManager
を非同期にディスパッチされた各スレッドに再バインドし、最後の非同期ディスパッチまで閉じるのを延期するように、"false" を返します。- オーバーライド:
- クラス
OncePerRequestFilter
のshouldNotFilterAsyncDispatch
shouldNotFilterErrorDispatch
protected boolean shouldNotFilterErrorDispatch()フィルターが各エラーディスパッチにEntityManager
を提供できるように、"false" を返します。- オーバーライド:
- クラス
OncePerRequestFilter
のshouldNotFilterErrorDispatch
doFilterInternal
protected void doFilterInternal(HttpServletRequestEE request, HttpServletResponseEE response, FilterChainEE filterChain) throws ServletExceptionEE, IOExceptionSE クラスからコピーされた説明:OncePerRequestFilter
doFilter
と同じ契約ですが、単一のリクエストスレッド内のリクエストごとに 1 回だけ呼び出されることが保証されています。詳細については、OncePerRequestFilter.shouldNotFilterAsyncDispatch()
を参照してください。デフォルトの ServletRequest および ServletResponse の代わりに、HttpServletRequest および HttpServletResponse 引数を提供します。
- 次で指定:
- クラス
OncePerRequestFilter
のdoFilterInternal
- 例外:
ServletExceptionEE
IOExceptionSE
lookupEntityManagerFactory
現在の HTTP リクエストを引数として、このフィルターが使用する EntityManagerFactory を検索します。デフォルトの実装は、引数なしで
lookupEntityManagerFactory
に委譲し、取得された EntityManagerFactory 参照をキャッシュします。- 戻り値:
- 使用する EntityManagerFactory
- 関連事項:
lookupEntityManagerFactory
このフィルターが使用する EntityManagerFactory を調べます。デフォルトの実装では、Spring のルートアプリケーションコンテキストで指定された名前の Bean を探します。
- 戻り値:
- 使用する EntityManagerFactory
- 関連事項:
createEntityManager
リクエストにバインドされる JPA EntityManager を作成します。サブクラスでオーバーライドできます。
- パラメーター:
emf
- 使用する EntityManagerFactory- 関連事項: