0

WebアプリケーションにHibernateとSpringを使用しています。

これでいくつかの場所で私はトランザクションをコミットするのを忘れました...以下のコードのように

 SessionFactory sf = HibernateUtils.getSessionFactory();
                session = sf.openSession();
                tx = session.beginTransaction();
..........................................Some Code.............................

But forgot to commit transaction.....

finally
{
session.flush();
session.close();
}

今私の質問はそれです:-

  • これは私にとって何か問題を引き起こしますか?
  • メモリリークに関する問題はありますか?
  • データベースへの負荷が増加していますか?

または、これが私のシステムにどのような影響を及ぼしますか?

4

1 に答える 1

2

トランザクションをコミットしない場合は、

  • トランザクションに関係するテーブルは、接続がドロップ/クローズされるまでロックされます。
  • トランザクションの一部としてテーブルに加えられた変更は、プールからの同じ接続を再利用するユーザーのみが利用でき、他のユーザーは利用できません。
  • そのcommit()ような接続でメソッドが閉じ/ドロップされるまで呼び出されない場合、接続のクローズ/ドロップ後に行われたすべての変更は失われます。

基本的に、システムの動作は任意であり、これは問題であることを意味します。ただし、メモリリークは発生しません。

于 2012-10-04T05:10:17.247 に答える