java中事务

article/2025/10/3 2:50:29

1.开启事务

事务的四大特性

ACID是原子性(atomicity)一致性(consistency)隔离性 (isolation)和持久性(durability)的缩写。

事务的原子性:事务作为整体执行,要么都成功,要么都回滚。

原子:不可以再次分割
在事务中多条sql 语句,要么都执行成功,有一条失败,其他成功的sql 回滚

事务的一致性:表示当事务执行失败时,所有被该事务影响的数据都应该恢复到事务执行前的状态。

以转账为例:xiaoming 给wangli 转1000
xiaoming 和 wanli 的账户 总额 ,在转账前后不会发生变化
​
转账成功:xiaoming -1000   wangli +1000
转账失败:金额数据不变

事务的持久性:事务对数据库所做的操作是永久性的。

凡是事务提交的数据,当机器宕机、掉电 重启以后,数据还在,不丢失 

事务的隔离性:多个事务在并发执行过程中,是相互独立的(隔离的)比如:售票过程。

隔离性 就是,一个事务能否看读取到另外一个事务未提交的数据

隔离级别

隔离级别:指的就是一个SqlSession 能否看到另外一个SqlSession 事务未提交的数据

隔离级别本质就是我们允许脏数据的程度

正在上传…重新上传取消

脏数据的程度

问题描述
脏读一个事务读取到另一个事务还未提交的数据。大于等于 read-commited 可防止
不可重复读一个事务内多次读取一行数据的相同内容,其结果不一致。大于等于 repeatable-read 可防止
幻影读一个事务内多次读取一张表中的相同内容,其结果不一致。serialized-read 可防止

正在上传…重新上传取消

3.1.1 概念

isolation 隔离级别

名称描述
default(默认值)(采用数据库的默认的设置) (建议)
read-uncommited读未提交
read-commited读提交 (Oracle数据库默认的隔离级别)
repeatable-read可重复读 (MySQL数据库默认的隔离级别)
serialized-read序列化读

隔离级别由低到高为:read-uncommited < read-commited < repeatable-read < serialized-read

3.1.2 特性

  • 安全性:级别越高,多事务并发时,越安全。因为共享的数据越来越少,事务间彼此干扰减少。

  • 并发性:级别越高,多事务并发时,并发越差。因为共享的数据越来越少,事务间阻塞情况增多。

3.1.3 并发问题

事务并发时的安全问题

问题描述
脏读一个事务读取到另一个事务还未提交的数据。大于等于 read-commited 可防止
不可重复读一个事务内多次读取一行数据的相同内容,其结果不一致。大于等于 repeatable-read 可防止
幻影读一个事务内多次读取一张表中的相同内容,其结果不一致。serialized-read 可防止

不可重复读:可以解决更新时数据的一致性

幻影读:可以解决增加,删除数据时的一致性

参考:事务的四种隔离级别 - 吴小凯 - 博客园

传播行为

传播行为:就是在事务中的一个方法(增删改查),调用另外一个方法(增删改查),此时一个方法中的事务和另外一个方法中的事务是否共享(是否sqlSesion共享)

propagation传播行为

当涉及到事务嵌套(Service调用Service)时,可以设置:

  • SUPPORTS = 不存在外部事务,则不开启新事务;存在外部事务,则合并到外部事务中。(适合查询)

  • REQUIRED = 不存在外部事务,则开启新事务;存在外部事务,则合并到外部事务中。 (默认值)(适合增删改)

SUPPORTS

 

正在上传…重新上传取消

REQUIRED

正在上传…重新上传取消

事务的第一个方面是传播行为。传播行为定义关于客户端和被调用方法的事务边界。Spring定义了7中传播行为。


http://chatgpt.dhexx.cn/article/3HD2EfNe.shtml

相关文章

Java事务的ACID属性和四种隔离级别和传播机制

事务的ACID属性 数据库管理系统中事务(transaction)的四个特性&#xff08;分析时根据首字母缩写依次解释&#xff09;&#xff1a;原子性&#xff08;Atomicity&#xff09;、一致性&#xff08;Consistency&#xff09;、隔离性&#xff08;Isolation&#xff09;、持久性&a…

java回滚失败_java事务回滚失败问题分析

Spring-Java事物回滚失效处理最近在做项目中,无意间发现有个类在抛事物回滚操作,数据也正常的插入到数据库当中了,于是仔细查看看一下具体原因。 一切还是要从Java的检查型异常和非检查型异常说起。 那么什么是检查型异常什么又是非检查型异常呢? 最简单的判断点有两个: 1…

java中事务特性_java事务的四大特性ACID

前言 对于要把事务在实际中使用好&#xff0c;需要了解事务的特性。 事务的四大特性主要是&#xff1a;原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)。 一、事务的四大特性 1.1原子性(Atomicity) 原子性是指事务是一个不可分割的工作单位&a…

Java 事务的传播性(Transactional)

前言 事务的传播性是Spring特有的概念&#xff0c;是基于Spring AOP技术实现的&#xff0c;原本的方法不具备事务的功能&#xff0c;运用Spring AOP的方式动态的增加了事务的功能&#xff0c;来确保数据库的数据的一致性。 只要开启事务的方法发生调用关系就一定存在事务的传…

Java 事务应用

一&#xff0c; 事务的一些基础知识简单回顾一下&#xff0c;讲的不是很深入&#xff0c;网上博客很多。 1&#xff0c;关于事务的四大特性&#xff1a;原子性、隔离性、一致性、持久性 本文不再赘述&#xff1b; 2&#xff0c;事务的隔离级别&#xff1a;读未提交&#xff0c;…

Java事务管理

事务的ACID属性&#xff1a;原子性(Atomicity )、一致性( Consistency )、隔离性或独立性( Isolation)和持久性(Durabilily) ACID 特性 A&#xff08;原子性&#xff09;事务的原子操作单元&#xff0c;对数据的修改&#xff0c;要么全部执行&#xff0c;要么全部不执行&#x…

java 事务级别_java事务隔离级别

事务隔离级别是由数据库系统实现的。 Java事务 1) 说到事务&#xff0c;不得不提的就是ACID特性&#xff0c;再次回顾&#xff1a; 原子性(atomicity)&#xff1a;组成事务处理的语句形成了一个逻辑单元&#xff0c;不能只执行其中的一部分。 一致性(consistency)&#xff1a…

Java中使用事务(注解实现)

Java中使用事务&#xff08;注解实现&#xff09; 事务的介绍 描述&#xff1a; 对于一个功能实现或者业务流程&#xff0c;要么全做&#xff0c;要么全不做&#xff01; 特性&#xff1a; ACID A - 原子性&#xff1a;执行的最小单位&#xff0c;要么全做&#xff0c;要么全…

JAVA的事务

要先知道什么是java中的事务? 事务: 一般是指要做的或所做的事情.专业术语是这样说的: 就是代码逻辑上的一组操作,这些操作要么全部成功,要么全部失败!举一个现实生活当中的例子: 1张三账上有2000元&#xff0c;李四账号也有2000元。张三要向李四转账1000元&#xff0c;正常来…

Java中的事务

一、事务概述 1. 什么是事务 事务是指对数据库的一系列的操作序列&#xff0c;数据库应用系统通过事务集来完成对数据的存取操作。 2. 事务的特性&#xff08;ACID原则&#xff09; 原子性&#xff08;Atomicity&#xff09;&#xff1a;一个事务的操作不可分割&#xff0c…

java事务总述

文章目录 一、java事务概述1.1、java事务简述1.2、Java事务的类型1.3、java事务的特性1.4、java事务的隔离级别1.5、spring事务的传播特性1.6、spring支持的事务管理类型 二、java事物使用2.1、XML配置2.2、事务使用方式 一、java事务概述 1.1、java事务简述 1、简介 事务(TR…

Java中的事务及使用

什么是事务&#xff1f; 事务&#xff08;Transaction&#xff09;&#xff0c;一般是指要做的或所做的事情。在计算机术语中是指访问并可能更新数据库中各种数据项的一个程序执行单元(unit)。事务通常由高级数据库操纵语言或编程语言&#xff08;如SQL&#xff0c;C或Java&am…

测试用例设计方法---等价类划分法

1 等价类划分法 1.1 定义 是把所有可能输入的数据&#xff0c;即程序的输入域划分策划国内若干部分&#xff08;子集&#xff09;&#xff0c;然后从每一个子集中选取少数具有代表性的数据作为测试用例。方法是一种重要的、常用的黑盒测试用例设计方法。 1.1划分等价类 1&a…

02测试用例设计方法-等价类划分

等价类划分法 1&#xff09;定义 是把所有可能的输入数据,即程序的输入域划分成若干部分&#xff08;子集&#xff09;,然后从每一个子集中选取少数具有代表性的数据作为测试用例。该方法是一种重要的,常用的黑盒测试用例设计方法。使用这一方法时&#xff0c;完全不考虑程序的…

等价类划分用例案例设计

一、加法案例 测试要求&#xff1a;计算1到100的两个整数之和&#xff08;包括1和100&#xff09; 提示&#xff1a;一般是一个框输入正确的值&#xff0c;一个框输入错误的值&#xff0c;没有两个框都输入错误的值&#xff0c;因为更容易确定到底是哪个框出现错误的值&#x…

常见测试用例设计方法1---等价类划分

目录 一&#xff0c;等价类划分概念&#xff1a; 二&#xff0c;有效等价类和无效等价类&#xff1a; 三&#xff0c;划分等价类的标准 四&#xff0c;设计测试用例 五&#xff0c;以QQ密码设定规则为例使用等价类划分编写测试用例 1&#xff0c;分析需求&#xff0c;确定输…

黑盒测试方法|测试用例的设计方法--等价类划分方法

黑盒测试方法–测试用例的设计方法–等价类划分方法 目录 等价类划分方法边界值分析方法错误推测方法因果图方法判定表驱动分析方法正交实验设计方法功能图分析方法场景设计方法 等价类划分方法 一、方法简介 &#xff08;1&#xff09;定义 把所有可能的输入数据,即程序的…

软件测试:等价类划分举例

等价类的设计思路&#xff1a; 根据输入条件&#xff0c;确定等价类&#xff0c;包括有效等价类和无效等价类&#xff0c;建立等价类列表为每个等价类规定一个唯一的编号设计一个测试用例&#xff0c;使其尽可能多地覆盖尚未被覆盖的有效等价类&#xff0c;重复这一步&#xff…

等价类划分法-案例剖析-设计测试用例

目录 等价类划分法概念 有效等价类和无效等价类 等价类设计测试用例步骤 案例1 案例2 案例3 等价类划分法概念 等价类划分法是把所有可能的输入数据&#xff0c;即程序的输入数据集合划分成若干个子集即等价类&#xff0c;然后从每个等价类中选取少量具有代表性的数据作为…

15.3-等价类划分

目录 一、等价类划分的概念 二、使用等价类划分的原因 三、等价类划分的价值 四、相关概念 1、等价类 2、有效等价类 3、无效等价类 五、等价类划分法使用步骤 六、等价类的划分原则 1、原则1 2、原则2 3、原则3 4、原则4 5、原则5 6、原则6 七、测试用例的设计步骤 八、等价类…