首页
学习
活动
专区
圈层
工具
发布

spring事务

一、什么是事务 逻辑上的一组操作,组成这组操作的各个逻辑单元,要么一起成功,要么一起失败。...二、事务的特性(ACID) 原子性:确保动作要么全部完成,要么完全不起作用 一致性:一旦所有事务动作完成,事务就要被提交。...数据保持一致性 隔离性:多个事务会同时处理相同的数据,每个事务都应该隔离开,防止数据损坏 持久性:事务一旦完成,无论系统如何,结果不受影响,事务结果持久化到硬盘中 三、基于xml配置文件方式 事务的增强,指定对哪个事务管理器进行增强 --> 事务方法(增删改)之间互相调用,事务的管理方式 isolation:事务传播行为 timeout:超时时间 ⑴ 事务需要在一定时间内进行提交,如果不提交进行回滚 ⑵ 默认值为-1,不超时

22800

Spring事务

1、什么是事务? 事务是指逻辑上的一组操作,这组操作要么全部成功,要么全部失败。 2、事务的特性 ①原子性:指事务的操作要么全部都发生,要么都不发生。...③隔离性:指多个事务并发访问数据库时,一个用户的事务不能被其他用户的事务所干扰,多个并发事务之间数据要相互隔离(可以通过设置事务的隔离级别解决,后续会讲到)。...3、Spring事务管理器 Spring事务管理器高层抽象接口主要有3个接口 ①PlatformTransactionManager(平台事务管理器):主要是进行事务的提交回滚等功能。...③TransactionStatus(事务具体运行状态):包括事务是否已提交、是否是新创建的事务、是否有保存点等。...4、PlatformTransactionManager接口 根据不同的持久化框架提供了不同的PlatformTransactionManager接口实现: ①使用Spring JDBC或iBatis

73200
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Spring事务

    一、Spring事务简介 事务作用:在数据层保障一系列的数据库操作同成功同失败 Spring事务作用:在数据层或业务层保障一系列的数据库操作同成功同失败 实现: 通过PlatformTransactionManager...: Spring配置类中使用@EnableTransactionManagement注解开启事务管理 在JdbcConfig中设置事务管理器: @Bean public PlatformTransactionManager...@Transactional注解开启事务 Spring注解式事务通常添加在业务层接口中而不会添加到业务层实现类中,降低耦合 注解式事务可以添加到业务方法上表示当前方法开启事务,也可以添加到接口上表示当前接口所有方法开启事务...三、Spring事务角色 事务管理员:发起事务方,在Spring中通常指代业务层开启事务的方法 事务协调员:加入事务方,在Spring中通常指代数据层方法,也可以是业务层方法 四、事务相关配置 属性...在业务层接口上添加Spring事务,设置事务传播行为REQUIRES_NEW(需要新事务): public interface LogService { @Transactional(propagation

    33721

    Spring 事务和事务传播机制

    事务的回顾 在 MySQL 学习阶段,已经了解到了事务是一组操作的集合,也就是把所有的操作作为一个整体,一起向数据库提交或者撤销操作,要么同时成功,要么同时失败 一个事务的操作流程包括了,开启事务,执行事务操作...,提交事务或回滚事务,对于回滚事务来说,如果程序在执行过程中出现了错误,那么此时就需要执行回滚事务 2....编程式事务 Spring 手动操作事务和 MySQL 操作事务类似,也是分为开启事务,提交事务,回滚事务等三个操作,需要用到 DataSourceTransactionManager (事务管理器)来进行上述事务的操作...> spring-tx 只需在要执行的方法上添加@Transactional注解,添加之后,如果没有发生异常就正常执行,...事务传播机制 事务传播机制是指在多个事务方法相互调用时,定义事务如何在这些方法之间传播的规则,也就是延用调用方法的事务还是再重新开启一个新事务 Spring 事务的传播机制有以下七种 事务传播机制 描述

    47910

    Spring系列九:Spring 事务

    23.Spring 事务的种类?24.Spring 的事务隔离级别?25.Spring 的事务传播机制?26.声明式事务实现原理了解吗?27.声明式事务在哪些情况下会失效?----什么是事务?...Spring 事务的本质其实就是数据库对事务的支持,没有数据库的事务支持,Spring 是无法提供事务功能的。...接下来由叶秋学长带领你们学习Spring事务~23.Spring 事务的种类?...Spring 支持编程式事务管理和声明式事务管理两种方式:​编辑Spring事务分类 编程式事务 编程式事务管理使用 TransactionTemplate,需要显式执行事务。...Spring 事务的传播机制说的是,当多个事务同时存在的时候——一般指的是多个事务方法相互调用时,Spring 如何处理这些事务的行为。

    2.1K20

    【Spring源码】Spring事务原理

    2、Spring事务基本概念 2.1、基础配置 我们先来回顾一下Spring事务的基础配置信息,以下由ChatGPT给我们提供的相关资料: 2.1.1、Spring事务的基础配置 1、问:Spring事务的基础配置...配置事务管理器:事务管理器是 Spring 中用来管理事务的核心组件。...2.1.2、Spring事务的传播特性 问:Spring事务的传播特性 ChatGPT答:在 Spring 中,事务的传播特性(Propagation)用于控制在嵌套事务中,事务的行为如何传播到嵌套的方法调用中...Spring事务的本质其实就是数据库对事务的支持,没有数据库的事务支持,Spring也无法提供事务功能。...而是交由Spring自己完成。那么Spring使用事务的方式有哪些呢?在 Spring 中,我们可以通过声明式事务管理和编程式事务管理两种方式来管理事务。

    67410

    spring事务传播

    Spring 事务不生效的原因 同一个类中无事务方法调用一个有事务方法事务不生效 public void testTransactionWork() { insertTransaction();...Spring 事务的传播级别 Spring 事务传播级别与数据库事务隔离级别不同,传播分为 7 种级别: PROPAGATION_REQUIRED:Spring的默认传播级别,如果上下文中存在事务则加入当前事务...如果外层有事务并抛出异常,被嵌套的内层事务会回滚,反之如果内层事务抛出异常,外层事务不受影响。...这里的原因是,当事务发生异常会设置一个状态 Rollback, 如果外围事务读到了这个异常的状态,提交的时候就会抛出上述的异常(详细代码可以看参考资料中 Spring 事务源码分析) PROPAGATION_REQUIRES_NEW...,内部事务为外围事务的子事务,插入“张三”内部方法抛出异常,可以单独对子事务回滚 参考资料 Spring 事务源码剖析 一口气说出6中@Transactional失效的场景

    91620

    Spring 事务(Transaction)

    疫情期间在家重新读了《Spring in Action》,每次翻阅总有一些收获,之后在网上看了一些关于Spring事务管理的文章,感觉都没有讲全,这里就将书上的和网上关于事务的知识简要总结梳理一下...Spring声明式事务让我们从复杂的事务处理中得到解脱。...声明事务 1、配置方式-注解元数据驱动的声明式事务(@Transactional)、也可以采用XML元数据驱动的声明式事务 2、实现原理-Spring事务采用AOP的方式实现、PlatformTransactionManager...4、Spring事务保存点savepoint,创建基于SavePoint的嵌套事务来实现编程式事务管理。...; 4、如果使用了SpringMVC,SpringMVC容器有没有重复扫描; 业务代码是否吞掉异常; 5、Spring的事务管理默认只对出现运行期异常(java.lang.RuntimeException

    91730

    spring 之 事务

    --spring tx Spring 事务管理jar包--> org.springframework事务 Spring框架提供了声明式事务管理的功能,允许开发者通过配置来定义事务规则,而无需编写大量的事务管理代码。...声明式事务是通过Spring的AOP(面向切面编程)来实现的,通常使用注解或XML配置来定义事务。...因为没有添加事务,图书的库存更新了,但是用户的余额没有更新 显然这样的结果是错误的,购买图书是一个完整的功能,更新库存和更新余额要么都成功要么都失败 3.3、加入事务 ①添加事务配置 在spring配置文件中引入...以下是Spring基于XML的声明式事务是如何实现的简要步骤: 4.1、准备工作 可以直接把基于注解的声明式事务的工程直接拷贝一份,改个名字即可 4.2、修改Spring配置文件 将Spring配置文件中去掉

    33010

    Spring之事务

    一、事务基本概念 什么是事务 数据库事务( transaction)是访问并可能操作各种数据项的一个数据库操作序列 这些操作要么全部执行,要么全部不执行,是一个不可分割的工作单位 事务的特性 A:原子性...由并发事务所做的修改必须与任何其他并发事务所做的修改隔离 事务查看数据更新时,数据所处的状态要么是另一事务修改它之前的状态,要么是另一事务修改它之后的状态,事务不会查看到中间状态的数据 D:持久性(Durability...(requires_new):开启一个新的事务,如果一个事务已经存在,则将这个存在的事务挂起【不管有没有,直接开启一个新事务,开启的新事务和之前的事务不存在嵌套关系,之前事务被挂起】适用内部事务和外部事务不存在业务关联情况...,如日志 NOT_SUPPORTED(not_supported):以非事务方式运行,如果有事务存在,挂起当前事务【不支持事务,存在就挂起】 NEVER(never):以非事务方式运行,如果有事务存在,...被嵌套的事务可以独立于外层事务进行提交或回滚。如果外层事务不存在,行为就像REQUIRED一样【有事务的话,就在这个事务里再嵌套一个完全独立的事务,嵌套的事务可以独立的提交和回滚。

    27810

    Spring事务(下)

    完整的文章字数超限了,分成上下两篇 spring事务(上) 隔离规则 用来解决并发事务时出现的问题,其使用TransactionDefinition中的静态变量来指定 ISOLATION_DEFAULT...将事务标识为只读,只读事务不修改任何数据; 对于JDBC只是简单的将连接设置为只读模式,对于更新将抛出异常; 对于一些其他ORM框架有一些优化作用,如在Hibernate中,Spring事务管理器将执行...setDefaultTimeout(10) 回滚规则 spring事务管理器会捕捉任何未处理的异常,然后依据规则决定是否回滚抛出异常的事务 默认配置下,Spring只有在抛出的异常为运行时unchecked...,在回滚或提交的时候需要应用对应的事务状态 编程式和声明式事务 Spring提供了对编程式事务和声明式事务的支持,编程式事务允许用户在代码中精确定义事务的边界 而声明式事务(基于AOP)有助于用户将操作与事务规则进行解耦...编程式 Spring提供两种方式的编程式事务管理,分别是:使用TransactionTemplate和直接使用PlatformTransactionManager 使用TransactionTemplate

    1K30

    Spring 事务介绍

    一、简介 接着上篇 数据库事务简介,来聊聊 Spring 事务。...Spring 本身并不实现事务,Spring 事务的本质还是底层数据库对事务的支持,没有数据库事务的支持,Spring 事务就不会生效。...Spring 事务提供了一套抽象的事务管理,并且结合 Spring IOC 和 Spring AOP,简化了应用程序使用数据库事务,并且通过声明式事务,可以做到应用程序无侵入的事务功能。...Spring 事务的本质其实就是 AOP 和 数据库事务,Spring 将数据库的事务操作提取为切面,通过 AOP 的方式增强事务方法。...PlatformTransactionManager PlatformTransactionManager 是 Spring 事务结构中的核心接口,Spring 并不直接管理事务,而是提供了多种事务管理器

    82730

    Spring事务和事务传播机制

    ,回滚事务) -- 开启事务 start transaction; -- 提交事务 commit; -- 回滚事务 rollback; 2.Spring中事务的实现 Spring中的事务操作分为两类...编程式事务 Spring手动操作事务和上面MySQL操作事务类似,有3个重要操作步骤: 开启事务(获取事务) 提交事务 回滚事务 SpringBoot内置了两个对象: DataSourceTransactionManager...串行化(SERIALIZABLE):序列化,事务最高隔离级别.它会强制事务排序,使之不会发生冲突,从而解决了脏读,不可重复读和幻读问题,但因为执行效率低,所以真正使用的场景并不多 3.2.2 Spring...Spring事务传播机制有以下7种: Propagation.REQUIRED:默认的事务传播级别.如果当前存在事务,则加入该事务.如果当前没有事务,则创建一个新的事务。...3.3.3 Spring事务传播机制使用和各种场景演示 重点学习: REQUIRED(默认值) REQUIRES_NEW 3.3.3.1 REQUIRED(加入事务) 代码实现: 用户注册

    19410

    spring事务(上)

    前言 这篇其实也要归纳到《常识》系列中,但这重点又是spring的介绍,故归档在spring系列中。 工作很多年,除了学生时代学过,事务还真没有用过。...三级加锁协议避免了脏读和不可重复读的问题 Spring事务 Spring事务管理的实现有许多细节,如果对整个接口框架有个大体了解会非常有利于我们理解事务 ? ?...Spring事务管理器 Spring事务管理涉及的接口的联系如下: ?...Spring来说是透明的,它并不关心那些,那些是对应各个平台需要关心的,所以Spring事务管理的一个优点就是为不同的事务API提供一致的编程模型,如JTA、JDBC、Hibernate、JPA。...以前没有Spring帮助我们完成事务的时候我们必须自己手动的控制事务,例如当我们项目中仅仅使用hibernate,而没有集成进spring的时候,我们在一个service层中调用其他的业务逻辑方法,为了保证事物必须也要把当前的

    93030

    Spring事务—总结

    Spring事务 事务管理是应用系统开发中必不可少的一部分。Spring 为事务管理提供了丰富的功能支持。Spring 事务管理分为编码式和声明式的两种方式。...注释配置是目前流行的使用方式,因此本文将着重介绍基于@Transactional 注解的事务管理。 Spring事务隔离级别 其实就是事务的隔离级别 DEFAULT 使用数据库默认的事务隔离级别....串行化的 (serializable) 所有事务请求串行执行 实现原理 利用Spring Aop实现的。...方法执行成功,则提交事务。如果执行方法中出现异常,则回滚事务。 Spring事务传播 事务传播行为指当一个事务方法被另一个事务方法调用时,这个事务方法应该如何进行。...Spring定义了七种传播行为: PROPAGATION_REQUIRED 如果上下文中存在一个事务,则加入到当前事务。如果没有事务则开启一个新的事务。

    3.5K50

    Spring-事务

    2 Spring事务管理 PlatformTransactionManager事务管理器 TransactionDefinition事务定义信息 TransactionStatus事务具体运行状态 2.1...以下为几个常见的PlatformTransactionManager实现: 事务 说明 DataSourceTransactionManager 使用Spring JDBC或MyBatis进行持久化时使用...新建事务,如果有事务,则挂起当前事务 PROPAGATION_NOT_SUPPORTED 非事务方式运行,如果有事务,则挂起当前事务 PROPAGATION_NEVER 非事务方式运行,如果有事务,则抛出异常...PROPAGATION_NESTED 如果有事务,则以嵌套方式运行没有则与PROPAGATION_REQUIRED类似 2.2.2 事务隔离级别 Spring事务隔离级别 隔离级别 解释...3 事务管理的方式 Spring提供了两种事务管理方式:编程式事务管理,声明式事务管理。 编程式事务管理:使用TransactionTemplate来简化编程式事务和异常处理。

    62920
    领券