java中事务默认自动提交,需调用setautocommit(false)关闭以实现手动控制;事务结束后须显式commit()或rollback(),并可选调用setautocommit(true)恢复自动提交。

Java 中事务的自动提交(Auto-Commit)默认是开启的,即每条 SQL 语句执行后立即提交。要实现手动事务控制(比如多条语句作为一个整体成功或失败),必须关闭自动提交;事务结束后,再显式调用 commit() 或 rollback(),之后可选择重新开启自动提交。
如何关闭自动提交
通过 Connection 对象的 setAutoCommit(false) 方法关闭:
- 必须在执行任何 DML(INSERT/UPDATE/DELETE)语句之前调用,否则已执行的语句可能已被自动提交
- 关闭后,所有后续 SQL 都处于同一个事务上下文中,直到显式提交或回滚
- 示例:conn.setAutoCommit(false);
如何开启自动提交
调用 setAutoCommit(true) 即可恢复自动提交模式:
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
- 通常在事务成功提交后、或明确不再需要手动控制时开启
- 开启前建议确保当前没有未提交/未回滚的更改,否则可能抛出异常或行为不确定
- 示例:conn.setAutoCommit(true);
事务提交与回滚的关键操作
关闭自动提交后,必须主动管理事务边界:
- conn.commit(); —— 提交事务,持久化所有更改
- conn.rollback(); —— 回滚事务,撤销所有未提交的更改
- 发生异常时应优先调用
rollback(),避免连接持有脏数据或锁 - 建议在
finally块或 try-with-resources 后确保恢复自动提交(如需)
使用 JDBC 时的典型流程
一个安全的手动事务处理结构如下:
- 获取
Connection - 调用
setAutoCommit(false) - 执行多条 SQL(PreparedStatement / Statement)
- 无异常则
commit();有异常则rollback() - 最后调用
setAutoCommit(true)(可选,取决于连接是否复用) - 关闭资源(Statement、ResultSet、Connection)
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










