当前位置: 首页 > news >正文

Spring事务简单操作

什么是事务?

事务是一组操作的集合,是一个不可分割的操作

事务会把所有的操作作为⼀个整体, ⼀起向数据库提交或者是撤销操作请求. 所以这组操作要么同时

成功, 要么同时失败.

事务的操作

分为三步:

1. 开启事start transaction/ begin (⼀组操作前开启事务)

2. 提交事务: commit (这组操作全部成功, 提交事务)

3. 回滚事务: rollback (这组操作中间任何⼀个操作出现异常, 回滚事务)
 

Spring中事务的实现

Spring 中的事务操作分为两类:

1. 编程式事务(⼿动写代码操作事务)

2. 声明式事务(利⽤注解⾃动开启和提交事务

声明式事务

在需要事务的⽅法上添加 @Transactional 注解就可以实现了. ⽆需⼿动开启事务和提交事务, 进入

⽅法时⾃动开启事务, ⽅法执⾏完会⾃动提交事务, 如果中途发⽣了没有处理的异常会⾃动回滚事务

@Transactional成功 

我们先建立一个数据库表

当我们插入数据时,带上@Transactional注解,如果成功就会自动提交,如果错误就会回滚

结果如下

这里很明显,我们的数据已经插入成功了

@Transactional异常

当我们的数据异常的时候,就会触发回滚

结果如下:

上部分代码显示插入成功,但是下面因为有错误就造成了回滚,没有提示有commit

我们查看数据库表,因为回滚,所以是没有数据插入的

@Transactional捕获异常

上述代码中,如果有错误就会产生回滚,导致数据插入不进去,我们可以捕获异常进行处理的方法,使数据插入成功

结果如下:

可以看到这次数据插入成功了,提示有commit

我们查看数据库表,发现捕获异常后就可以使数据插入成功

@Transactional捕获异常怎么回滚

当我们捕获异常,数据就会插入成功,但是我们在捕获异常后,怎么再次回滚呢?

两个方法:

1、重新抛出异常

当我们捕获异常后不处理,再次抛一个异常出去后,就会产生回滚

2、手动回滚业务

当我们捕获异常后,想要产生回滚,我们也可以手动回滚事务

相关文章:

  • 中国地图上标注颜色的方法
  • Ubuntu 20.04安装及配置docker
  • 龙虎榜——20250521
  • ESP32-S3 (ESP IDF 5.4.1 - LVGL 9.2.0)九宫格拼音输入法
  • Java 实现二进制与十进制之间的互相转换
  • 7.数据的预测分析及可视化
  • 网页 HTML布局(详解)
  • Javascript 编程基础(4)函数 | 4.2、this 绑定机制
  • 全球证券交易系统开发方案
  • Pytorch基础操作
  • C#中Task.Run的线程管理最佳实践与并发控制
  • 【Linux系统】第七节—git+cgdb(详解)
  • 更新ubuntu软件源遇到GPG error
  • MySQL中的重要常见知识点(入门到入土!)
  • Python高效网络爬虫开发指南
  • 日语学习-日语知识点小记-构建基础-JLPT-N4阶段(26):のは ・ のが ・ のを
  • 东莞一锂离子电池公司IPO终止,客户与供应商重叠,社保缴纳情况引疑
  • 力扣周赛置换环的应用,最少交换次数
  • Python爬虫实战:获取小说网最新风云榜数据并分析,为创作者提供参考素材
  • python-leetcode 71.每日温度
  • 网站流量超了/优化网站最好的刷排名软件
  • 网站被入侵后需做的检测 1/前端开发培训机构推荐
  • 网站开发分类/seo外包公司报价
  • 如何用wordpress做网站/外贸网站建设优化推广