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