3.8.3. JTA による現在のセッションコンテキストマネージメント

Hibernate の自動「現在」 Session 管理を使用すると、 最も簡単に Session とトランザクションを処理することができます。 コンテキストセッションの説明は 「コンテキストのセッション」 を参照してください。 現在の JTA トランザクションに関連する Hibernate Session がない場合に "jta" セッションコンテキストを使用すると、 最初に sessionFactory.getCurrentSession() を呼び出した時に Hibernate Session が開始され、 JTA トランザクションに関連付けられます。 "jta" コンテキストの getCurrentSession() より読み出された Session は、 トランザクションが完了する前に自動的にフラッシュし、 トランザクション完了後に閉じるよう設定されます。 また、 各ステートメントの後に積極的に JDBC 接続を開放するよう設定されます。 これにより、 関連する JTA トランザクションのライフサイクルによって Session が管理され、 ユーザーコードに管理に関する懸念が残らないようにします。 コードは UserTransaction よりプログラムを用いて JTA を使用するか、 Hibernate Transaction API を使用してトランザクション境界を設定することができます (移植可能なコードの場合は、 Hibernate Transaction API を使用してトランザクション境界を設定することが推奨されます)。 EJB コンテナ内で実行する場合は、 CMT による宣言的なトランザクション境界が推奨されます。