首页 > 其他分享 >Spring事务

Spring事务

时间:2024-07-27 11:27:24浏览次数:10  
标签:事务 Spring Connection 2.3 属性 transactionManager

文章目录



在这里插入图片描述

在这里插入图片描述


第一章 Spring 的事务处理

1.1 什么是事务

保证业务操作完整性的⼀种数据库机制 事务的4特点: A C I D

  1. A 原⼦性
  2. C ⼀致性
  3. I 隔离性
  4. D 持久性

1.2 如何控制事务

  • JDBC:

    Connection.setAutoCommit(false); 
    Connection.commit(); 
    Connection.rollback(); 
    
  • Mybatis:

    • Mybatis⾃动开启事务
    sqlSession(Connection).commit(); 
    sqlSession(Connection).rollback(); 
    

结论:控制事务的底层都是 Connection 对象完成的。

1.3 Spring 控制事务的开发

  1. 声明式事务

    方法上加事务注解就行了。但是 注意事务失效情况。

  2. 编程式事务

    @Autowired
    private TransactionDefinition transactionDefinition;
    @Autowired
    private DataSourceTransactionManager transactionManager;
    
    //  开启事务
    TransactionStatus transactionStatus
            = transactionManager.getTransaction(transactionDefinition);
    
    try {
        //	业务操作
        // ...
        //  提交事务
        transactionManager.commit(transactionStatus);
    } catch (Exception e) {
        //  回滚事务
        transactionManager.rollback(transactionStatus);
        log.error("...");
    }
    

第二章 Spring中的事务属性

2.1 什么是事务属性

属性:描述物体特征的⼀系列值

​ 性别 身⾼ 体重 …

事务属性:描述事务特征的⼀系列值

  1. 隔离属性
  2. 传播属性
  3. 只读属性
  4. 超时属性
  5. 异常属性

2.2 如何添加事务属性

@Transactional(isloation=,propagation=,readOnly=,timeout=,rollbackFor=, noRollbackFor=,) 

2.3 事务属性详解

2.3.1 隔离属性

四种隔离级别

//TODO

在这里插入图片描述

2.3.2 传播属性

概念:他描述了事务解决嵌套问题的特征

什么叫做事务的嵌套:他指的是⼀个⼤的事务中,包含了若⼲个⼩的事务

问题:⼤事务中融⼊了很多⼩的事务,他们彼此影响,最终就会导致外部⼤的事务,丧失了 事务的原⼦性

传播属性的值及其⽤法

传播属性的值外部 不存 在事 务外部存在事务备注
REQUIRED(默认)开启 新的 事务融合到外部事 务中增删 改⽅ 法
SUPPORTS不开 启事 务融合到外部事 务中查询 ⽅法
REQUIRES_NEW开启 新的 事务挂起外部事 务,创建新的 事务⽇志 记录 ⽅法 中

2.3.3 只读属性

针对于只进⾏查询操作的业务⽅法,可以加⼊只读属性,提供运⾏效率

默认值:false

2.3.4 异常属性

Spring事务处理过程中

默认 对于RuntimeException及其⼦类 采⽤的是回滚的策略

默认 对于Exception及其⼦类 采⽤的是提交的策略

rollbackFor = {java.lang.Exception,xxx,xxx}

noRollbackFor = {java.lang.RuntimeException,xxx,xx}

@Transactional(rollbackFor = {java.lang.Exception.class},noRollbackFor = {java.lang.RuntimeException.class})

建议:实战中使⽤ RuntimeExceptin 及其⼦类 ;使⽤事务异常属性的默认值



在这里插入图片描述



标签:事务,Spring,Connection,2.3,属性,transactionManager
From: https://blog.csdn.net/aliyunyyds/article/details/140705478

相关文章

  • 3、springboot3 vue3开发平台-后端-swagger,knife4j整合
    文章目录1.knife4j简介2.引入依赖3.简单配置4.测试1.knife4j简介Knife4j是一个集Swagger2和OpenAPI3为一体的增强解决方案帮助开发者快速聚合使用OpenAPI规范。兼容OpenAPI3,使用更简介界面较swagger好看,文档导出、测试功能更简介方便官网:https://doc.......
  • 【计算机毕设论文】基于SpringBoot成绩管理系统
    ......
  • SpringCloud Alibaba - nacos服务自动注册流程
    在SpringCloudAlibaba中,Nacos服务自动注册流程大致遵循以下步骤:依赖集成:首先,通过在项目的pom.xml文件中添加spring-cloud-starter-alibaba-nacos-discovery依赖,将Nacos服务发现功能集成到SpringBoot应用中。配置文件设置:在application.properties或application.yml中......
  • Spring源码(四) Aware 接口
    Aware接口:Aware接口是Spring提供的一组标记接口,表示bean可以通过回调方法从Spring容器接收特定框架对象的通知。publicinterfaceAware{}Spring提供了大量以Aware命名的接口,如BeanNameAware、BeanFactoryAware、ApplicationContextAware等。这些接口定义了回调方......
  • SpringBoot Thymeleaf 模板标签
    扩展Thymeleaf模板标签上一篇我们写到SpringBoot依赖之Thymeleaf模版引擎的使用,当时只列举了简单文本标签,下面针对多标签进行分析和分享。Thymeleaf的模板标签,包括文本显示、属性设置、条件判断、循环迭代、表单处理、片段引用、国际化支持等常用功能。我们尽可能......
  • Spring学习(一)Bean生命周期
    Spring最重要的功能就是管理bean,所以bean的生命周期特别重要Spring配置文件分两种,一种是xml配置,一种是注解(Java代码)的配置第一步:Spring扫描(通过加载两种配置文件扫描)并且加载类定义(BeanDefinition),这个时候会生成一个BeanDefinitionMap,并且判断扫描出来的类型中有没有实现Bean......
  • SpringBoot源码初学者(二):SpringBoot事件监听器
    ps:真正适合阅读源码的新手来看的SpringBoot源码讲解,如果你真的想读懂SpringBoot源码,可以按照以下推荐的方式来阅读文章打开ide,打开SpringBoot源码,跟着文章一起写注释,写自己的注释不要过于纠结没讲到的地方,毕竟SpringBoot源码那么多,想全讲完是不可能的,只要跟着文章认真阅......
  • Spring的Bean生命周期中@PostConstruct注解
    前言在Spring框架中,@PostConstruct注解用于在Bean初始化完成后立即执行某些方法。这个注解的作用是保证在依赖注入完成后,执行一些初始化工作。诞生背景@PostConstruct注解的诞生是为了提供一种标准化的、简单的方法来进行对象初始化工作。1.简化初始化逻辑在传统的Java开发......
  • SpringMVC框架
    SpringMVC是一个基于Java的Web框架,它通过模型-视图-控制器(MVC)设计模式来帮助开发者构建灵活且可维护的Web应用程序。以下是一个简单的SpringMVC框架实例,展示了如何创建一个基本的Web应用程序。1.创建Maven项目首先,你可以使用Maven创建一个新的Java项目。确......
  • Spring框架配置扩展
    Bean的作用域:在Java编程中,Bean 是一个用于封装数据的对象。Bean 通常是一个简单的Java类,它遵循一些特定的约定,例如有一个无参构造函数、可以通过getter和setter方法访问属性。关于 Bean 的作用域,它通常取决于 Bean 的使用环境。以下是一些常见的 Bean 作用域......