我目前正在阅读 Hibernate 文档,并遇到以下引用:
如果 Session 抛出异常,包括任何 SQLException,立即回滚数据库事务,调用 Session.close() 并丢弃 Session 实例。Session 的某些方法不会使会话保持一致状态。Hibernate 抛出的任何异常都不能被视为可恢复的。通过在 finally 块中调用 close() 确保 Session 将被关闭。
就我而言,这一切都是有道理的,但这确实让我想知道关闭会话对既不提交也不回滚的事务有什么影响?
例如,考虑以下内容:
session = getSessionFactory().openSession();
session.beginTransaction();
session.save(carObject);
//session.getTransaction().commit();
session.close();
注释掉提交,并且这里没有调用回滚,session.close() 的预期行为是什么?它是否只是自动回滚该提交,是否留下“挂起”事务?等等
(我明白这显然不是一个好习惯——我只是想更多地了解基本概念。)