一文拿捏Spring事务之、ACID、隔离级别、失效场景

1.🌟Spring事务

1.编程式事务

事务管理代码嵌入嵌入到业务代码中,来控制事务的提交和回滚,例如TransactionManager

2.声明式事务

使用aop对方法前后进行拦截,然后在目标方法开始之前创建或者加入一个事务,执行完目标方法之后根据执行的情况提交或者回滚

3.事务传播行为(7种)

Spring事务传播行为是Spring框架中的一种事务管理方式

当事务方法被另外一个事务方法调用时,必须指定事务应该如何传播

1.PROPAGATION_REQUIRED(默认)

如果当前存在事务,则加入该事务;如果当前没有事务,则创建一个新的事务

2.PROPAGATION_REQUIRES_NEW

创建一个新的事务,如果当前存在事务,则把当前事务挂起

3.PROPAGATION_NESTED

如果当前存在事务,就在当前事务内执行;否则,就执行与 PROPAGATION_REQUIRED 类似的操作

4.PROPAGATION_SUPPORTS

如果当前存在事务,则加入该事务;如果当前没有事务,则以非事务的方式继续运行

5.PROPAGATION_NOT_SUPPORTED

以非事务方式运行,如果当前存在事务,则把当前事务挂起

6.PROPAGATION_MANDATORY

如果当前存在事务,则加入该事务;如果当前没有事务,则抛出异常

7.PROPAGATION_NEVER

以非事务方式运行,如果当前存在事务,则抛出异常

4.Spring事务隔离级别

Spring的事务隔离级别是用于控制事务并发访问数据库时的行为

  1. ISOLATION_DEFAULT,使用数据库默认的隔离级别,MySql 默认采用的是 REPEATABLE_READ,也就是可重复读

  2. ISOLATION_READ_UNCOMMITTED(读未提交),最低的隔离级别,可能会出现脏读、幻读或者不可重复读。

  3. ISOLATION_READ_COMMITTED(读已提交),允许读取并发事务提交的数据,可以防止脏读,但幻读和不可重复读仍然有可能发生。

  4. ISOLATION_REPEATABLE_READ(可重复读),对同一字段的多次读取结果都是一致的,除非数据是被自身事务所修改的,可以阻止脏读和不可重复读,但幻读仍有可能发生。

  5. ISOLATION_SERIALIZABLE(序列化),最高的隔离级别,虽然可以阻止脏读、幻读和不可重复读,但会严重影响程序性能

5.事务隔离性问题

1. 脏读

   读了未提交的的数据    例如:T1、T2俩事务,T1读了T2,T2回滚

2. 不可重复读

   读了修改前后的数据

3. 幻读

   读了插入或删除前后的数据

6.事务四大特性(ACID)

  1. 原子性 (atomicity):强调事务的不可分割.

    事务是数据库的逻辑工作单位,事务中包含的各操作要么都做,要么都不做

  2. 一致性 (consistency):事务的执行的前后数据的完整性保持一致.

    事务执行的结果必须是使数据库从一个一致性状态变到另一个一致性状态。因此当数据库只包含成功事务提交的结果时,就说数据库处于一致性状态。如果数

    据库系统 运行中发生故障,有些事务尚未完成就被迫中断,这些未完成事务对数据库所做的修改有一部分已写入物理数据库,这时数据库就处于一种不正确的

    状态,或者说是 不一致的状态。

  3. 隔离性 (isolation):一个事务执行的过程中,不应该受到其他事务的干扰

    一个事务的执行不能其它事务干扰。即一个事务内部的操作及使用的数据对其它并发事务是隔离的,并发执行的各个事务之间不能互相干扰。

  4. 持续性 (durability) :事务一旦结束,数据就持久到数据库

    事务一旦提交,它对数据库中的数据的改变就应该是永久性的。接下来的其它操作或故障不应该对其执行结果有任何影响。

7.事务失效场景

  1. 作用于非public方法上

  2. 数据库不支持事务

  3. 同个类中的调用被@transaction修饰的方法,会失效,因为只有当事务方法被当前类以外的代码调用,才会由spring生成的代理对象来管理

  4. 未背Spring进行管理

  5. 方法被final修饰,代理类中,就无法重写该方法,添加事务功能

8.事务超时时间

一个事务所允许执行的最长时间,如果在超时时间内还没有完成的话,就自动回滚

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/124871.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【匠心打造】从0打造uniapp 可视化拖拽设计 c_o 第十篇

一、click one for uniapp置顶: 全部免费开源 (你商业用途也没关系,不过可以告诉我公司名或者项目名,放在官网上好看点。哈哈-_-) 二、写在之前 距离上一篇更新已经大约4个月了,公司的事情,自己的一些琐事一直没时间…

uni-app使用iconfont字体图标

先iconfont选择好自己需要的图标 添加至项目 下载字体文件到本地 将下载的文件解压缩到工程目录static文件夹下 定义好iconfont.css文件的font-face声明,修改好引入的url地址 打开App.vue文件 ,引入static下刚才修改的iconfont.css字体图标文件 完成上线的步骤后就可以全局使用…

【软考】PV 操作

#国庆发生的那些事儿# 临界资源: 诸进程间需要互斥方式对其进行共享的资源,如打印机、磁带机等临界区: 每个进程中访问临界资源的那段代码称为临界区信号量: 是一种特殊的变量。 信号量的值与相应资源的使用情况有关: ①: 当信号量的值大于0时,表示当…

【每日一题】买卖股票的最佳时机 IV

文章目录 Tag题目来源题目解读解题思路方法一:动态规划 写在最后 Tag 【动态规划】【数组】【2023-10-04】 题目来源 188. 买卖股票的最佳时机 IV 题目解读 本题与 121. 买卖股票的最佳时机、122. 买卖股票的最佳时机 II、123. 买卖股票的最佳时机 III 题意目的一…

学会安装Redis数据库到服务器或计算机(Windows版)

Redis 是一个基于内存的开源数据库系统,被广泛应用于 Web 应用、消息队列、缓存、实时统计等领域。它支持多种数据结构,包括字符串、哈希表、列表、集合、有序集合等,并提供了多种操作命令。 Redis 的特点如下: 内存存储&#xf…

【C++】多线程的学习笔记(2)——白话文版(bushi

目录 前一篇 本章内容提要 使用mutex锁的原因 mutex锁的概念 mutex的使用教程 锁的声明以及命名 mutex的加锁以及解锁 例子 结果 注意 mutex的其他方式的锁介绍 lock_guard 介绍 例子 运行结果 adopt_lock参数 unique_lock 介绍 try_to_lock defer_lock re…

堆排序——向下调整

之前我们要想实现堆排序,是运用建堆代码来实现的: 向上调整建堆——向下调整排序 那么去我们可不可以只适用一种调整方法(向下调整)就能实现这样的功能呢? 向要只使用向下调整就实现堆排序 首先就是把数组里的值使用…

Linux--socket编程

socket套接字编程 一、服务器和客户端的开发步骤: 1、创建套接字 2、为套接字添加信息(ip地址和端口号) 3、监听网络连接 4、监听到有客户端接入,接受连接(如没有接入,会发生阻塞到) 5、数据…

导出视频里的字幕

导出视频里的字幕 如何利用剪映快速提取并导出视频里的字幕 https://jingyan.baidu.com/article/c35dbcb0881b6fc817fcbcd2.html 如何快速提取视频中的字幕?给大家介绍一种简单高效又免费的提取方法。需要利用到“剪映”,以下是具体的操作步骤和指引&a…

第2篇 机器学习基础 —(1)机器学习方式及分类、回归

前言:Hello大家好,我是小哥谈。机器学习是一种人工智能的分支,它使用算法和数学模型来使计算机系统能够从经验数据中学习和改进,而无需显式地编程。机器学习的目标是通过从数据中发现模式和规律,从而使计算机能够自动进…

SpringMVC(二)@RequestMapping注解

我们先新建一个Module。 我们的依赖如下所示&#xff1a; <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaL…

Is This The Intelligent Model(这是智能模型吗)

Is This The Intelligent Model 这是智能模型吗 Ruoqi Sun Academy of Military Science Defense Innovation Institute, Beijing, 100091, China E-mail: ruoqisun7163.com The exposed models are called artificial intelligent models[1-3]. These models rely on knowled…