クラス OpenEntityManagerInViewInterceptor
java.lang.ObjectSE
org.springframework.orm.jpa.EntityManagerFactoryAccessor
org.springframework.orm.jpa.support.OpenEntityManagerInViewInterceptor
- 実装されたすべてのインターフェース:
Aware
、BeanFactoryAware
、AsyncWebRequestInterceptor
、WebRequestInterceptor
public class OpenEntityManagerInViewInterceptor
extends EntityManagerFactoryAccessor
implements AsyncWebRequestInterceptor
JPA EntityManager をリクエストの処理全体のスレッドにバインドする Spring Web リクエストインターセプター。"Open EntityManager in View" パターンを対象としています。つまり、元のトランザクションがすでに完了しているにもかかわらず、Web ビューでの遅延読み込みを可能にします。
このインターセプターは、現在のスレッドを介して JPA EntityManagers を使用可能にし、トランザクションマネージャーによって自動検出されます。JpaTransactionManager
または JtaTransactionManager
を介したサービス層トランザクション、および非トランザクションの読み取り専用実行に適しています。
OpenEntityManagerInViewFilter
とは対照的に、このインターセプターは Spring アプリケーションコンテキストでセットアップされるため、Bean 接続を利用できます。
- 導入:
- 2.0
- 作成者:
- Juergen Hoeller
- 関連事項:
フィールドサマリー
フィールド修飾子と型フィールド説明static final StringSE
「既存のエンティティマネージャーの処理に参加する」リクエスト属性の EntityManagerFactory toString 表現に追加されるサフィックス。クラス org.springframework.orm.jpa.EntityManagerFactoryAccessor から継承されたフィールド
logger
コンストラクターのサマリー
コンストラクター方法の概要
修飾子と型メソッド説明void
afterCompletion
(WebRequest request, ExceptionSE ex) リクエスト処理の完了後、つまりビューのレンダリング後のコールバック。void
afterConcurrentHandlingStarted
(WebRequest request) ハンドラーがリクエストを同時に処理し始めたときに、postHandle
およびafterCompletion
の代わりに呼び出されます。protected StringSE
リクエストがすでにフィルタリングされていることを識別するリクエスト属性の名前を返します。void
postHandle
(WebRequest request, ModelMap model) 呼び出しが成功した後、ビューのレンダリングの前に(もしあれば)リクエストハンドラーの実行をインターセプトします。void
preHandle
(WebRequest request) 呼び出しの前にリクエストハンドラーの実行をインターセプトします。クラス org.springframework.orm.jpa.EntityManagerFactoryAccessor から継承されたメソッド
createEntityManager, getEntityManagerFactory, getJpaPropertyMap, getPersistenceUnitName, getTransactionalEntityManager, obtainEntityManagerFactory, setBeanFactory, setEntityManagerFactory, setJpaProperties, setJpaPropertyMap, setPersistenceUnitName
フィールドの詳細
PARTICIPATE_SUFFIX
「既存のエンティティマネージャーの処理に参加する」リクエスト属性の EntityManagerFactory toString 表現に追加されるサフィックス。
コンストラクターの詳細
OpenEntityManagerInViewInterceptor
public OpenEntityManagerInViewInterceptor()
メソッドの詳細
preHandle
インターフェースからコピーされた説明:WebRequestInterceptor
呼び出しの前にリクエストハンドラーの実行をインターセプトします。コンテキストリソース(Hibernate セッションなど)を準備し、リクエスト属性またはスレッドローカルオブジェクトとして公開できます。
- 次で指定:
- インターフェース
WebRequestInterceptor
のpreHandle
- パラメーター:
request
- 現在の Web リクエスト- 例外:
DataAccessException
postHandle
インターフェースからコピーされた説明:WebRequestInterceptor
呼び出しが成功した後、ビューのレンダリングの前に(もしあれば)リクエストハンドラーの実行をインターセプトします。ハンドラーの実行が成功した後にコンテキストリソースを変更することができます(たとえば、Hibernate セッションのフラッシュ)。
- 次で指定:
- インターフェース
WebRequestInterceptor
のpostHandle
- パラメーター:
request
- 現在の Web リクエストmodel
- ビューに公開されるモデルオブジェクトのマップ(null
の場合があります)。必要に応じて、公開されたモデルの分析やモデル属性の追加に使用できます。
afterCompletion
public void afterCompletion(WebRequest request, @Nullable ExceptionSE ex) throws DataAccessException インターフェースからコピーされた説明:WebRequestInterceptor
リクエスト処理の完了後、つまりビューのレンダリング後のコールバック。ハンドラー実行の結果で呼び出されるため、適切なリソースのクリーンアップが可能になります。メモ: このインターセプターの
preHandle
メソッドが正常に完了した場合にのみ呼び出されます!- 次で指定:
- インターフェース
WebRequestInterceptor
のafterCompletion
- パラメーター:
request
- 現在の Web リクエストex
- ハンドラーの実行時にスローされる例外(ある場合)- 例外:
DataAccessException
afterConcurrentHandlingStarted
インターフェースからコピーされた説明:AsyncWebRequestInterceptor
ハンドラーがリクエストを同時に処理し始めたときに、postHandle
およびafterCompletion
の代わりに呼び出されます。- 次で指定:
- インターフェース
AsyncWebRequestInterceptor
のafterConcurrentHandlingStarted
- パラメーター:
request
- 現在のリクエスト
getParticipateAttributeName
リクエストがすでにフィルタリングされていることを識別するリクエスト属性の名前を返します。デフォルトの実装では、EntityManagerFactory インスタンスの toString 表現が取得され、".FILTERED" が追加されます。- 関連事項: