jdbc事务操作详解
1、 事务是指一组操作必须全部成功或全部失败,体现为“同生共死”的特性,在数据库层面表现为具备原子性的批量操作。
2、 新建一个名为testTransaction的Java单元测试类。

3、 首先查询数据库当前状态,以7至8条记录为例,在开启事务前确认初始数据。

4、 计划将第7和第8条记录分别更新为shiwu1与shiwu2。此前未启用事务控制,相关实现代码如下:

5、 运行单元测试后,控制台日志显示两条SQL语句均执行成功。

6、 查询数据库验证,可见对应数据已完成更新。

7、 若程序运行中发生异常会如何?我们在逻辑中人为插入异常,并尝试将第7、第8条记录改为shiwu3和shiwu4,观察其实际表现。

8、 单元测试执行失败,但日志表明第一条SQL已提交生效。

9、 查看数据库发现:第7条记录已被修改,而第8条未变化,违背了“全有或全无”的一致性原则——理想状态下应要么全部更新,要么全部不更新。

10、 此问题根源在于缺乏事务管理。事务要求所有操作必须在同一个Connection对象中完成。但原Dao层的update方法每次调用都会新建连接,导致两条SQL运行于不同连接,无法形成统一事务边界,从而破坏数据一致性。
11、 下一步需重构update方法的设计逻辑。
12、 方法内部不再关闭Connection,改由外部调用方统一管理连接生命周期。

13、 确保两条SQL语句在同一个Connection实例中执行。
14、 编写事务控制代码,提交后即可完成整体更新。

15、 补充日志输出及异常捕获机制,增强可追踪性。

16、 测试过程中首条SQL执行成功,随后抛出异常触发事务回滚。

17、 数据库内容保持原始状态,证实所有变更已被撤销。

18、 事务处理流程归纳为三步:准备连接、执行操作、最终提交或回滚。


















