1、事务管理简介

一组业务操作ABCD,要么全部成功,要么全部不成功。

1.1 特性:ACID

  • 原子性:整体
  • 一致性:完成
  • 隔离性:并发
  • 持久性:结果

1.2 隔离问题

  • 脏读:一个事务读到另一个事务没有提交的数据
  • 不可重复读:一个事务读到另一个事务已提交的数据(update)
  • 虚读(幻读):一个事务读到另一个事务已提交的数据(insert)

1.3 隔离级别

  • read uncommitted:读未提交。
  • read committed:读已提交。解决脏读。
  • repeatable read:可重复读。解决:脏读、不可重复读。
  • serializable :串行化。都解决,单事务。

2、Spring事务管理

2.1 顶级接口

  1. PlatformTransactionManager

    平台事务管理器,spring要管理事务,必须使用事务管理器进行事务配置时,必须配置事务管理器。

  2. TransactionDefinition

    事务详情(事务定义、事务属性),spring用于确定事务具体详情,

    例如:隔离级别、是否只读、超时时间 等

    进行事务配置时,必须配置详情。spring将配置项封装到该对象实例。

  3. TransactionStatus

    事务状态,spring用于记录当前事务运行状态。例如:是否有保存点,事务是否完成。

    spring底层根据状态进行相应操作。

2.2 事务状态

2.3 事务定义

PROPAGATION_REQUIRED , required , 必须  【默认值】
支持当前事务,A如果有事务,B将使用该事务。
如果A没有事务,B将创建一个新的事务。
PROPAGATION_SUPPORTS ,supports ,支持
支持当前事务,A如果有事务,B将使用该事务。
如果A没有事务,B将以非事务执行。
PROPAGATION_MANDATORY,mandatory ,强制
支持当前事务,A如果有事务,B将使用该事务。
如果A没有事务,B将抛异常。
PROPAGATION_REQUIRES_NEW , requires_new ,必须新的
如果A有事务,将A的事务挂起,B创建一个新的事务
如果A没有事务,B创建一个新的事务
PROPAGATION_NOT_SUPPORTED ,not_supported ,不支持
如果A有事务,将A的事务挂起,B将以非事务执行
如果A没有事务,B将以非事务执行
PROPAGATION_NEVER ,never,从不
如果A有事务,B将抛异常
如果A没有事务,B将以非事务执行
PROPAGATION_NESTED ,nested ,嵌套
A和B底层采用保存点机制,形成嵌套事务。
掌握:PROPAGATION_REQUIRED、PROPAGATION_REQUIRES_NEW、PROPAGATION_NESTED

十一:SpringBoot-事务管理的更多相关文章

  1. SpringBoot学习笔记(三):SpringBoot集成Mybatis、SpringBoot事务管理、SpringBoot多数据源

    SpringBoot集成Mybatis 第一步我们需要在pom.xml里面引入mybatis相关的jar包 <dependency> <groupId>org.mybatis. ...

  2. SpringBoot事务管理

    1.在UserMapper接口中添加更新和删除方法 package com.cppdy.mapper; import org.apache.ibatis.annotations.Delete; imp ...

  3. 框架源码系列十一:事务管理(Spring事务管理的特点、事务概念学习、Spring事务使用学习、Spring事务管理API学习、Spring事务源码学习)

    一.Spring事务管理的特点 Spring框架为事务管理提供一套统一的抽象,带来的好处有:1. 跨不同事务API的统一的编程模型,无论你使用的是jdbc.jta.jpa.hibernate.2. 支 ...

  4. springboot 事务管理

    添加注解就完事儿了 @Transactional 1,Propagation  事务的传播行为 Propagation.REQUIRED 如果存在事务,就加入,没有的话就创建(默认值) 比如 A 方法 ...

  5. springboot mybatis 事务管理

    本文主要讲述springboot提供的声明式的事务管理机制. 一.一些概念 声明式的事务管理是基于AOP的,在springboot中可以通过@Transactional注解的方式获得支持,这种方式的优 ...

  6. springboot xml声明式事务管理方案

    在开发过程中springboot提供的常见的事务解决方案是使用注解方式实现. 使用注解 在启动类上添加注解 @EnableTransactionManagement 在需要事务控制的方法添加@Tran ...

  7. springboot开启事务管理

    spring中开启事务管理需要在xml配置文件中配置,springboot中采取java config的配置方式. 核心是@EnableTransactionManager注解,该注解即为开启事务管理 ...

  8. Springboot下事务管理的简单使用

    关于事务管理的概念这里就不多介绍了,在我的博客“JDBC事务之理论篇”中也有介绍. 关于Spring的事务管理,主要是通过事务管理器来进行的.这里看个Spring事务管理的接口图:(来自博客https ...

  9. springboot(二)整合mybatis,多数据源和事务管理

     -- 1.整合mybatis -- 2.整合多数据源 -- 3. 整合事务 代码地址:https://github.com/showkawa/springBoot_2017/tree/master/ ...

  10. springboot使用 @Transactional 注解配置事务管理

    介绍 springboot对数据库事务的使用非常的方便,只需要在方法上添加@Transactional注解即可.Spring 为事务管理提供了丰富的功能支持.Spring 事务管理分为编程式和声明式的 ...

随机推荐

  1. Mac付费软件免费获取

    很简单,充分利用微信公众号和某宝即可 1.微信公众号里面会分享"XX软件下载"或破解教程只要打开微信搜索就可以搜到. 顺便推荐几个公众号"GameRoom".& ...

  2. windows server 2012 R2里IIS配置.net core2.1遇到的坑

    首先刚接触.net core不久,在本地也是简单写点测试程序,没遇到过什么问题,感觉还行,最近朋友搞了个asp.net core2.1的程序,让我给他服务器配置一下,我想这都跨平台了有什么难的吗?拿来 ...

  3. windows中关闭端口的方法

    打开cmd:输入-ano | findstr "端口号" 控制台会输出占用端口的pid 如"8380" 再向cmd中输入 taskkill /f/pid 838 ...

  4. C++语言基础——01一切的开始

    环境准备 集成开发环境(Integrated Development Environment,IDE) 竞赛中最常见的是Dev-C++,平时练习采用其他IDE也可,使用方法都是类似的. 编译器 推荐使 ...

  5. python中环境变量的使用

    前言 之前就经常用,今天来凑个篇数. 在开发的过程中,我们经常会将代码中某些可能更改的,比如redis地址,数据库地址,限流阈值等参数写活来提高灵活性, 传统的方式可能是写在配置文件中,比如 xml ...

  6. LeetCode283 移动零

    给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序. 示例: 输入: [0,1,0,3,12] 输出: [1,3,12,0,0] 说明: 必须在原数组上操作, ...

  7. Linux简单Shell脚本监控MySQL、Apache Web和磁盘空间

    Linux简单Shell脚本监控MySQL.Apache Web和磁盘空间 1. 目的或任务 当MySQL数据库.Apache Web服务器停止运行时,重新启动运行,并发送邮件通知: 当服务器磁盘的空 ...

  8. MBAir下安装httprunner2.5.7 har2case 出现zsh: command not found解决方案

    MBAir下python3.8安装httprunner2.5.7 出现zsh: command not found find / -name hrun查找到路径为: /Users/w550856/Li ...

  9. 总结下MySql优化。防止数据灾难的发生。

    在PHP开发中用到的数据库中MySql是最牛逼的数据库,没有之一--^_^ 相比Sqlite个人最喜欢的特性就是"支持多线程,充分利用 CPU 资源",不像Sqlite那样,动不动 ...

  10. ClickHouse安装使用(单机、集群、高可用)

    Clickhouse版本:20.3.6.40-2 安装包地址:https://repo.yandex.ru/clickhouse/rpm/stable/x86_64/ 一.单机版 1.安装依赖 yum ...