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