【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指定事务的传播行为

相关文章
|
21天前
|
前端开发 Java Spring
Spring MVC核心:深入理解@RequestMapping注解
在Spring MVC框架中,`@RequestMapping`注解是实现请求映射的核心,它将HTTP请求映射到控制器的处理方法上。本文将深入探讨`@RequestMapping`注解的各个方面,包括其注解的使用方法、如何与Spring MVC的其他组件协同工作,以及在实际开发中的应用案例。
36 4
|
21天前
|
前端开发 Java 开发者
Spring MVC中的请求映射:@RequestMapping注解深度解析
在Spring MVC框架中,`@RequestMapping`注解是实现请求映射的关键,它将HTTP请求映射到相应的处理器方法上。本文将深入探讨`@RequestMapping`注解的工作原理、使用方法以及最佳实践,为开发者提供一份详尽的技术干货。
63 2
|
21天前
|
前端开发 Java Spring
探索Spring MVC:@Controller注解的全面解析
在Spring MVC框架中,`@Controller`注解是构建Web应用程序的基石之一。它不仅简化了控制器的定义,还提供了一种优雅的方式来处理HTTP请求。本文将全面解析`@Controller`注解,包括其定义、用法、以及在Spring MVC中的作用。
40 2
|
24天前
|
消息中间件 Java 数据库
解密Spring Boot:深入理解条件装配与条件注解
Spring Boot中的条件装配与条件注解提供了强大的工具,使得应用程序可以根据不同的条件动态装配Bean,从而实现灵活的配置和管理。通过合理使用这些条件注解,开发者可以根据实际需求动态调整应用的行为,提升代码的可维护性和可扩展性。希望本文能够帮助你深入理解Spring Boot中的条件装配与条件注解,在实际开发中更好地应用这些功能。
31 2
|
21天前
|
前端开发 Java 开发者
Spring MVC中的控制器:@Controller注解全解析
在Spring MVC框架中,`@Controller`注解是构建Web应用程序控制层的核心。它不仅简化了控制器的定义,还提供了灵活的请求映射和处理机制。本文将深入探讨`@Controller`注解的用法、特点以及在实际开发中的应用。
55 0
|
存储 SQL Java
Spring事务管理的底层逻辑—源码解析
首先进入CglibAopProxy.class的intercept方法打上一个Debug断点调试,或者在JdkDynamicAopProxy.class的invoke方法(如果目标方法是继承接口方式实现),根据不同实现方法类型选择不同的动态代理类
139 0
Spring事务管理的底层逻辑—源码解析
|
XML Java 数据格式
【spring源码学习】spring的事务管理的源码解析
【一】spring事务管理(1)spring的事务管理,是基于aop动态代理实现的。对目标对象生成代理对象,加入事务管理的核心拦截器==>org.springframework.transaction.interceptor.TransactionInterceptor。
2095 0
|
2月前
|
人工智能 自然语言处理 前端开发
SpringBoot + 通义千问 + 自定义React组件:支持EventStream数据解析的技术实践
【10月更文挑战第7天】在现代Web开发中,集成多种技术栈以实现复杂的功能需求已成为常态。本文将详细介绍如何使用SpringBoot作为后端框架,结合阿里巴巴的通义千问(一个强大的自然语言处理服务),并通过自定义React组件来支持服务器发送事件(SSE, Server-Sent Events)的EventStream数据解析。这一组合不仅能够实现高效的实时通信,还能利用AI技术提升用户体验。
223 2
|
3天前
|
NoSQL Java Redis
Spring Boot 自动配置机制:从原理到自定义
Spring Boot 的自动配置机制通过 `spring.factories` 文件和 `@EnableAutoConfiguration` 注解,根据类路径中的依赖和条件注解自动配置所需的 Bean,大大简化了开发过程。本文深入探讨了自动配置的原理、条件化配置、自定义自动配置以及实际应用案例,帮助开发者更好地理解和利用这一强大特性。
35 14
|
25天前
|
缓存 IDE Java
SpringBoot入门(7)- 配置热部署devtools工具
SpringBoot入门(7)- 配置热部署devtools工具
42 1
SpringBoot入门(7)- 配置热部署devtools工具