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

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 による宣言的トランザクション境界が好ましいです。