SpringBoot 的事务管理|学习笔记

简介: 快速学习 SpringBoot 的事务管理

开发者学堂课程【SpringBoot 实战教程SpringBoot 的事务管理】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/651/detail/10803


SpringBoot 的事务管理


内容介绍:

定义

二、案例

 

一、定义

1、事务管理是为了保证一组操作要执行都执行不执行都不执行所以在项目中事务管理是非常必要的在 springboot 中可以使用xml配置文件方式或者是注解的方式进行声明事务在 SpringBoot 中推荐使用 @Transactional 注解来声明事务。

2、使用了 spring-boot-starter-jdbc

spring-boot-starter-data-jpa 依赖的时候,SpringBoot 会自动默认分别注入 DataSourceTransactionManager

JpaTransactionManager先不考虑 jpa

 

二、案例

1、前边写过 springboot 整合 jdbcTemplate 案例在这个基础之上添加事务的管理事务是用在 service 上因为 service 都是业务要保证业务成功都成功出现异常就全部回掉在这里面有一个添加用户的功能现在并没有进行事务管理看一下存在的问题比如在添加用户的业务中写入会导致异常的代码只要在正常情况下这个业务发生异常之前数据库操作应该回掉说明当前添加的用户不应该插入到数据库表中现在没有进行事务管理它照样会把用户信息添加到表中因为王喜之前已经添加过了把王喜换成王欢启动访问controller叫saveuser会发生异常王欢被添加到表中没有添加事务管理

image.png

可以看到王欢被添加到表中实际上不应该把它添加到表中因为在业务中已经发生异常

image.png

添加事务管理在方法上加 Transactional 注解因为 springboot 已经默认配置了事务管理只要发生异常所有数据库都会发生回滚这时用户就不能被添加到表中把名字改成王乐

@Transactional

public void saveUser (Users user )

{

userDao. addUser (user) ;

Inti=6/0;

}

重新启动再次访问页面出现异常查看数据表中王乐没有被添加到表中说明 Transactional 注解已经发挥作用了这个是在整合 jdbcTemplate 的案例中

2、springboot 整合 Mybatis 案例这是对应的依赖 mybatis- spring-boot- starter找到 service这里面也有添加用户的功能添加一个会导致异常的语句调用添加用户的叫 addusers王小二改成王小狗这时没有在 service 上使用事务管理即使发生异常添加用户时也能加到数据库中启动controller 访问路径是 addusers刷新表王小狗依然出现在表中

image.png

正常情况下不应该加到数据库中这时需要使用事务管理在方法上加 @Transactional名字改成王小猫再重新启动这次添加了事务管理所以在 service 层发生异常它会就把添加用户的操作会滚掉这时王小猫用户是不能被添加的再次访问

image.png

查看数据库王小猫没有被添加到数据库中事务管理只需要在相应业务上添加 @Transactional 即可因为相应的事务管理器springboot 已经默认注入

相关文章
|
消息中间件 Java RocketMQ
Springboot 集成 Rocketmq 消费者|学习笔记
快速学习 Springboot 集成 Rocketmq 消费者
1452 1
Springboot 集成 Rocketmq 消费者|学习笔记
|
消息中间件 IDE Java
Springboot 集成 Rocketmq 生产者|学习笔记
快速学习 Springboot 集成 Rocketmq 生产者
801 0
Springboot 集成 Rocketmq 生产者|学习笔记
|
NoSQL 安全 Java
SpringBoot 自动配置的原理|学习笔记
快速学习 SpringBoot 自动配置的原理
188 0
SpringBoot 自动配置的原理|学习笔记
|
SQL 监控 Java
SpringBoot的MyBatis工程配置|学习笔记
快速学习SpringBoot的MyBatis工程配置
239 0
SpringBoot的MyBatis工程配置|学习笔记
|
监控 Java 应用服务中间件
SpringBoot|学习笔记
快速学习SpringBoot
126 0
SpringBoot|学习笔记
|
存储 机器学习/深度学习 IDE
SpringBoot 项目与被开发快速迁移|学习笔记
快速学习 SpringBoot 项目与被开发快速迁移
SpringBoot 项目与被开发快速迁移|学习笔记
|
安全 Java 应用服务中间件
集中式整合之搭建Springboot环境|学习笔记
快速学习集中式整合之搭建Springboot环境
集中式整合之搭建Springboot环境|学习笔记
|
消息中间件 Java 测试技术
SpringBoot 集成 JUNIT 测试下单基本流程|学习笔记
快速学习 SpringBoot 集成 JUNIT 测试下单基本流程
207 0
SpringBoot 集成 JUNIT 测试下单基本流程|学习笔记
|
Java 程序员 应用服务中间件
初识 SpringBoot|学习笔记
快速学习 初识 SpringBoot
133 0
|
Java 开发者
SpringBoot 整合测试|学习笔记
快速学习 SpringBoot 整合测试
198 0
SpringBoot 整合测试|学习笔记