現在、Hibernate のドキュメントを読んでいるときに、次の引用に出くわしました。
Session が例外 (SQLException を含む) をスローした場合は、すぐにデータベース トランザクションをロールバックし、Session.close() を呼び出して、Session インスタンスを破棄します。Session の特定のメソッドは、セッションを一貫した状態のままにしません。Hibernate によってスローされた例外は、回復可能として扱うことはできません。最終ブロックで close() を呼び出して、セッションが閉じられることを確認します。
私に関する限り、これはすべて理にかなっていますが、コミットもロールバックもされていないトランザクションでセッションを閉じると、どのような影響があるのでしょうか?
たとえば、次のことを考慮してください。
session = getSessionFactory().openSession();
session.beginTransaction();
session.save(carObject);
//session.getTransaction().commit();
session.close();
コミットがコメントアウトされ、ここでロールバックが呼び出されない場合、session.close() の予想される動作は何ですか? コミットを自動的にロールバックするだけですか?「ハングしている」トランザクションを残しますか? 等
(これは明らかに良い習慣ではないことを理解しています.基礎となる概念についてもう少し理解しようとしています.)