CMTでトランザクションを管理している場合,トランザクションの管理はコンテナによって実行されます。この場合,トランザクションの開始や終了を実装することなくアプリケーションを開発できます。コンテナによる管理では,メソッドの開始直前にトランザクションが開始され,メソッドの終了直後にトランザクションがコミットして終了します。
コンテナによるトランザクションの開始・終了の前後に特定の処理を実行したい場合は,Session Synchronizationの機能を使用します。Session Synchronizationの機能は,次のどちらかの方法で使用できます。
アノテーションを指定する方法は,EJB 3.1以降で使用できます。アノテーションを指定すると,javax.ejb.SessionSynchronizationインタフェースの実装をしないで,トランザクションの開始・終了前後で処理を実行するタイミングを設定できるため,アプリケーションの開発が容易になります。
ここでは,アノテーションを使用する場合の指定について説明します。使用できるアノテーションを次に示します。
これらのアノテーションは,Stateful Session Beanのクラス(またはその親クラス)に指定できます。それぞれのSession Beanでは,これらのアノテーションを種類ごとに一つずつ指定できます。