3.8.3. JTA による現在のセッションコンテキストマネージメント
もっとも簡単に Session とトランザクションを扱う方法は、 Hibernate が自動的に「現在の」 Session を管理することです。 項2.5. 「コンテキスト上のセッション」 カレントセッションの説明を参照してください。もし "jta" セッションコンテキストを使った上で、現在の JTA トランザクションと Hibernate Session が関連していない場合は、最初に sessionFactory.getCurrentSession() をコールし、 JTA トランザクションとの関連付けを行ってください。 "jta" コンテキストの getCurrentSession() を通じて取得した Session は、トランザクションが完了する前に自動的にフラッシュし、完了した後には自動的にクローズします。また、各ステートメント後に JDBC コネクションを積極的にリリースします。これにより JTA トランザクションのライフサイクルで Session を管理することができ、ユーザーのコードからそのような管理をするコードを排除できます。 UserTransaction を通じて JTA をプログラムで管理することができます。または、(ポータブルなコードであれば) Hibernate Transaction API をトランザクション境界として使うこともできます。 EJB コンテナを使うときは、 CMT による宣言的トランザクション境界が好ましいです。