学习
实践
活动
工具
TVP
写文章

spring事物

spring的4种事务特性,5种隔离级别,7种传播行为

spring的事务

事务是逻辑上的一组操作,组成这组操作的各个逻辑单元,要么一起成功,要么一起失败.

事务特性(4种)

  • 原子性 (atomicity):强调事务的不可分割.
  • 一致性 (consistency):事务的执行的前后数据的完整性保持一致.
  • 隔离性 (isolation):一个事务执行的过程中,不应该受到其他事务的干扰
  • 持久性(durability) :事务一旦结束,数据就持久到数据库

如果不考虑隔离性引发安全性问题:

  • 脏读 :一个事务读到了另一个事务的未提交的数据不可重复读:一个事务读到了另一个事务已经提交的 update 的数据导致多次查询结果不一致.
  • 虚幻读 :一个事务读到了另一个事务已经提交的 insert的数据导致多次查询结果不一致.

事务隔离级别(5种)

  • DEFAULT 这是一个PlatfromTransactionManager默认的隔离级别,使用数据库默认的事务隔离级别.
  • 未提交读(read uncommited) :脏读,不可重复读,虚读都有可能发生
  • 已提交读 (read commited):避免脏读。但是不可重复读和虚读有可能发生
  • 可重复读 (repeatable read) :避免脏读和不可重复读.但是虚读有可能发生.
  • 串行化的 (serializable) :避免以上所有读问题.

  • Mysql 默认:可重复读
  • Oracle 默认:读已提交

事务的传播行为

PROPAGION_XXX :事务的传播行为

保证同一个事务中

  • PROPAGATION_REQUIRED 支持当前事务,如果不存在 就新建一个(默认)
  • PROPAGATION_SUPPORTS 支持当前事务,如果不存在,就不使用事务
  • PROPAGATION_MANDATORY 支持当前事务,如果不存在,抛出异常 保证没有在同一个事务中
  • PROPAGATION_REQUIRES_NEW 如果有事务存在,挂起当前事务,创建一个新的事务
  • PROPAGATION_NOT_SUPPORTED 以非事务方式运行,如果有事务存在,挂起当前事务
  • PROPAGATION_NEVER 以非事务方式运行,如果有事务存在,抛出异常
  • PROPAGATION_NESTED 如果当前事务存在,则嵌套事务执行
本文参与 腾讯云自媒体分享计划 ,欢迎热爱写作的你一起参与!
本文分享自作者个人站点/博客:https://earthchen.github.io复制
如有侵权,请联系 cloudcommunity@tencent.com 删除。
登录 后参与评论
0 条评论

相关文章

  • spring的事物 原

        Spring事务让我们从复杂的事务处理中得到解脱。使得我们再也无需要去处理获得连接、关闭连接、事务提交和回滚等这些操作。再也无需要我们在与事务相关的方法...

    尚浩宇
  • spring的事物配置 原

        xml配置这里不细说了,这里主要讲的是注解方式。     需要注意的是:        @Transactional只能被应用到public方法上, ...

    尚浩宇
  • SpringAOP和Spring事物管理

    Spring事务 : Spring事务管理接口: PlatformTransactionManager:事务管理器 TransactionDefiniti...

    海仔
  • Spring Boot 事物回滚

    1、启动类加上@EnableTransactionManagement注解,开启事务支持(其实默认是开启的)。

    FHAdmin
  • Spring声明式事物配置

    用户1220053
  • Spring Boot 事物的快速应用

    依赖的时候,框架会自动默认分别注入DataSourceTransactionManager或JpaTransactionManager。所以我们不需要任何额外 ...

    星尘的一个朋友
  • Spring事物的传播行为案例分析

    1、spring给出经常面试的考点Spring事务的4个特性含义---这个很容易理解

    宜信技术学院
  • spring自己对AOP的运用 -- spring事物(transaction)原理

    可以使用xml或者注解的方式在项目中使用aop,以注解为例,一般使用可以引用 AspectJ,自己创建一个类,在类上标注好注解 @Aspect

    爬蜥
  • spring事物中的传播及隔离

    1、使用 propagation 指定事务的传播行为, 即当前的事务方法被另外一个事务方法调用时。如何使用事务, 默认取值为 REQUIRED, 即使用调用方法...

    软件测试君
  • Mybatis之Spring与Mybatis的事物transaction

        mybatis-3.4.6.release, mybatis-spring-1.3.2.release.

    克虏伯
  • Spring MVC Controller层事物注解不生效

    最近在写一个管理台页面,是从页面提交多个form到controller层的,这些form要么都能提交成功,要么都失败。controller层需要进行事物处理,于...

    幽鸿
  • MySQL 事物

    事务是数据库处理操作,其中执行就好像它是一个单一的一组有序的工作单元。换言之,事务将永远不会是完全的,除非在组内每个单独的操作是成功的。如果事务中的任何操作失败...

    房上的猫
  • Spring详解--一篇文章让你弄懂spring事物管理

      事务(Transaction),一般是指要做的或所做的事情。在计算机术语中是指访问并可能更新数据库中各种数据项的一个程序执行单元(unit)。

    Java编程指南
  • Mysql事物

    现在很多软件都是多用户,多程序,多线程的,对同一张表可能同时有很多人在用,为保持数据的一致性,所以提出了事物的概念

    彼岸舞
  • Spring学习之事物的使用姿势一览

    主要记录下spring是如何支持事物的,以及在Spring结合mybatis时,可以怎么简单的实现数据库的事物功能

    一灰灰blog
  • Mysql事物隔离

    最近工作内容需要向一张表里面写入数据,有两个实现方法,每种方法会运行得到一份结果,两个结果的key会有大部分重复,后面跟的value会有不同。 表格中只允许两个...

    用户3578099
  • 旧事物也可以是新事物

    在过去的七个月或更长时间里,许多人的工作速度低于全速工作,但有些人却比其他人做得更多。即将发布影响CRM的大量新技术,但是即使没有到10月为止的最新公告,人们也...

    田冠宇
  • 事物隔离级别

    @Transactional(isolation = Isolation.READ_UNCOMMITTED):读取未提交数据(会出现脏读, 不可重复读) 基本不...

    动力节点Java培训
  • redis的事物

    对于一般的关系型数据库的事物来说,事物的执行过程无非为 生成事物 产生命令 执行事物。对于redis来说,multi就是生成事物,exec就是执行事物,di...

    程序员小饭

扫码关注腾讯云开发者

领取腾讯云代金券