クラス OpenEntityManagerInViewInterceptor

java.lang.ObjectSE
org.springframework.orm.jpa.EntityManagerFactoryAccessor
org.springframework.orm.jpa.support.OpenEntityManagerInViewInterceptor
実装されたすべてのインターフェース:
AwareBeanFactoryAwareAsyncWebRequestInterceptorWebRequestInterceptor

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
関連事項:
  • フィールドの詳細

  • コンストラクターの詳細

    • OpenEntityManagerInViewInterceptor

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

    • preHandle

      public void preHandle(WebRequest request) throws DataAccessException
      インターフェースからコピーされた説明: WebRequestInterceptor
      呼び出しの前にリクエストハンドラーの実行をインターセプトします。

      コンテキストリソース(Hibernate セッションなど)を準備し、リクエスト属性またはスレッドローカルオブジェクトとして公開できます。

      次で指定:
      インターフェース WebRequestInterceptorpreHandle 
      パラメーター:
      request - 現在の Web リクエスト
      例外:
      DataAccessException
    • postHandle

      public void postHandle(WebRequest request, @Nullable ModelMap model)
      インターフェースからコピーされた説明: WebRequestInterceptor
      呼び出しが成功した、ビューのレンダリングの前に(もしあれば)リクエストハンドラーの実行をインターセプトします。

      ハンドラーの実行が成功した後にコンテキストリソースを変更することができます(たとえば、Hibernate セッションのフラッシュ)。

      次で指定:
      インターフェース WebRequestInterceptorpostHandle 
      パラメーター:
      request - 現在の Web リクエスト
      model - ビューに公開されるモデルオブジェクトのマップ(null の場合があります)。必要に応じて、公開されたモデルの分析やモデル属性の追加に使用できます。
    • afterCompletion

      public void afterCompletion(WebRequest request, @Nullable ExceptionSE ex) throws DataAccessException
      インターフェースからコピーされた説明: WebRequestInterceptor
      リクエスト処理の補完後、つまりビューのレンダリング後のコールバック。ハンドラー実行の結果で呼び出されるため、適切なリソースのクリーンアップが可能になります。

      メモ: このインターセプターの preHandle メソッドが正常に完了した場合にのみ呼び出されます!

      次で指定:
      インターフェース WebRequestInterceptorafterCompletion 
      パラメーター:
      request - 現在の Web リクエスト
      ex - ハンドラーの実行時にスローされる例外(ある場合)
      例外:
      DataAccessException
    • afterConcurrentHandlingStarted

      public void afterConcurrentHandlingStarted(WebRequest request)
      インターフェースからコピーされた説明: AsyncWebRequestInterceptor
      ハンドラーがリクエストを同時に処理し始めたときに、postHandle および afterCompletion の代わりに呼び出されます。
      次で指定:
      インターフェース AsyncWebRequestInterceptorafterConcurrentHandlingStarted 
      パラメーター:
      request - 現在のリクエスト
    • getParticipateAttributeName

      protected StringSE getParticipateAttributeName()
      リクエストがすでにフィルタリングされていることを識別するリクエスト属性の名前を返します。デフォルトの実装では、EntityManagerFactory インスタンスの toString 表現を使用して、".FILTERED" を追加します。
      関連事項: