【spring(四)】Spring事务管理和@Transactional注解

简介: 【spring(四)】Spring事务管理和@Transactional注解


🌈键盘敲烂,年薪30万🌈



知识回顾:

  • ❓什么是事务

事务是对数据操作的集合,它是数据操作的最小执行单位,也就是说,要么一个事务中操作全部执行完毕,要么全都不执行。

  • 👇事务的四大特性

原子性:事务是数据操作的最小执行单位

一致性:要么全部执行完毕,要么全都不执行

隔离性:事务之间互相独立

持久性:事务提交对数据的修改是永久性的

Spring中的事务管理

问题抛出:

当执行删除部门操作时,该部门下对应的员工也要删除,这两个操作必须保持一致,如果删除部门后程序遇到了异常退出,这就会造成数据不一致。

解决方案:

我们把两个操作看成一个事务,在删除部门时开启事务,删除完员工提交事务,当遇到异常就回滚事务,这样问题就可以解决。

@Transactional注解:

概念:Transctional注解是Spring已经封装好的一个控制事务是否提交和回滚的注解

位置:业务(service)层的方法上、类上、接口上

作用:将当前方法交给spring进行事务管理,方法执行前,开启事务;成功执行完毕,提交事务;出现异常,回滚事务。

注意:Transactional修饰的事务默认遇到运行异常才回滚事务,遇到编译异常或其他异常还是会直接退出程序。

rollbackFor属性:

rollbackFor用于自定义遇到哪些异常时回滚事务。

    @Transactional(rollbackFor = Exception.class) //将该方法看作一个事务,遇到异常回滚,但是默认只是遇到运行异常才会回滚
    @Override
    public void deleteById(Integer id) {
        deptMapper.deleteById(id);  //删除部门信息
 
        empMapper.deleteByDeptId(id);   //删除员工信息
    }
propagation属性:

事务的传播行为:

一个事务的方法被另一个事务方法调用时,另一个事务该如何控制。

常见的事务传播行为(只记前两个就可):

应用:

需求:解散部门时,无论是成功还是失败,都要记录操作日志。

步骤:

 . 解散部门:删除部门、删除部门下的员工

 . 记录日志到数据库表中

📕总结

@Transactional注解用于控制spring事务管理

@rollbackFor可以指定遇到哪些异常回滚

@propagation指定事务的传播行为

相关文章
|
7天前
|
Java Spring 容器
Spring使用异步注解@Async正确姿势
Spring使用异步注解@Async正确姿势,异步任务,spring boot
|
6天前
|
XML Java 数据格式
spring复习03,注解配置管理bean
Spring框架中使用注解配置管理bean的方法,包括常用注解的标识组件、扫描组件、基于注解的自动装配以及使用注解后的注意事项,并提供了一个基于注解自动装配的完整示例。
spring复习03,注解配置管理bean
|
7天前
|
XML 前端开发 Java
控制spring框架注解介绍
控制spring框架注解介绍
|
20天前
|
Java 数据库连接 数据库
Spring基础3——AOP,事务管理
AOP简介、入门案例、工作流程、切入点表达式、环绕通知、通知获取参数或返回值或异常、事务管理
Spring基础3——AOP,事务管理
|
20天前
|
Java 数据库连接 数据格式
【Java笔记+踩坑】Spring基础2——IOC,DI注解开发、整合Mybatis,Junit
IOC/DI配置管理DruidDataSource和properties、核心容器的创建、获取bean的方式、spring注解开发、注解开发管理第三方bean、Spring整合Mybatis和Junit
【Java笔记+踩坑】Spring基础2——IOC,DI注解开发、整合Mybatis,Junit
|
2月前
|
Java Spring 开发者
掌握Spring事务管理,打造无缝数据交互——实用技巧大公开!
【8月更文挑战第31天】在企业应用开发中,确保数据一致性和完整性至关重要。Spring框架提供了强大的事务管理机制,包括`@Transactional`注解和编程式事务管理,简化了事务处理。本文深入探讨Spring事务管理的基础知识与高级技巧,涵盖隔离级别、传播行为、超时时间等设置,并介绍如何使用`TransactionTemplate`和`PlatformTransactionManager`进行编程式事务管理。通过合理设计事务范围和选择合适的隔离级别,可以显著提高应用的稳定性和性能。掌握这些技巧,有助于开发者更好地应对复杂业务需求,提升应用质量和可靠性。
34 0
|
3月前
|
数据库连接 数据库 开发者
Spring问题之使用@Transactional注解时需要注意哪些事项
Spring问题之使用@Transactional注解时需要注意哪些事项
|
3月前
|
XML Java 关系型数据库
面试一口气说出Spring的声明式事务@Transactional注解的6种失效场景
面试一口气说出Spring的声明式事务@Transactional注解的6种失效场景
|
Java 数据库 Spring
Spring中的@Transactional注解放在类上和方法上有什么不同?
Spring中的@Transactional注解放在类上和方法上有什么不同?
311 0
|
6天前
|
SQL 监控 druid
springboot-druid数据源的配置方式及配置后台监控-自定义和导入stater(推荐-简单方便使用)两种方式配置druid数据源
这篇文章介绍了如何在Spring Boot项目中配置和监控Druid数据源,包括自定义配置和使用Spring Boot Starter两种方法。
下一篇
无影云桌面