http://www.redhat.com/docs/manuals/jboss/jboss-eap-4.2/ja_JP/html/Hibernate_Reference_Guide/Database_transaction_demarcation-Using_JTA.html
getCurrentSession() オペレーションは、 JTA 環境では1つの欠点を持ちます。デフォルトで使われる
after_statement
コネクションリリースモードを使用する上で、警告が1つあります。 JTA 仕様の愚かな制約のために、
scroll()
または
iterate()
が返した、閉じられていない
ScrollableResults
または
Iterator
インスタンスを Hibernate が自動的にクリーンアップすることはできません。
finally
ブロックの中で、
ScrollableResults.close()
または
Hibernate.close(Iterator)
を明示的に呼び出して、裏に潜んだデータベースカーソルを解放
しなければなりません。 (もちろん、多くのアプリケーションでは、 JTA か CMT コードで
scroll()
や
iterate()
の使用を避けるのは容易です。)
PR