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 如果当前事务存在,则嵌套事务执行

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • java面试知识要点汇总(框架)

    https://www.cnblogs.com/ITtangtang/p/3978349.html

    用户1637228
  • Django调用百度地图api在地图上批量增加标记点

    在调用百度地图api进行web开发时遇到了一个需求,我们需要在网页中内嵌一个div 然后在div中调用百度地图的js显示我们所需要的地区。根据需求坐标在地图上...

    用户1637228
  • Django常用语句

    本篇主要介绍我们在使用django框架开发的时候使用的常用语句,为了增加开发效率,建议将这些语句记住并多多练习,

    用户1637228
  • Spring详解--一篇文章让你弄懂spring事物管理

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

    Java编程指南
  • 一文搞懂什么是事务

    我们要理解下事务概念:什么是事务呢?事务是并发控制的单位,是用户定义的一个操作序列。有四个特性(ACID):

    Java宝典
  • [spring事务]一篇浅文让你摆脱事务困扰

    原子性(Atomicity):事物是一个不可分割的工作单位,事物中的操作要么都发生,要么都不发生

    星尘的一个朋友
  • Java项目实践,数据访问层事务控制方法总结,保障数据安全

    事务是为解决数据安全操作提出的,事务控制实际上就是控制数据的安全访问,比如,银行转帐业务,账户A要将自己账户上的1000元转到B账户下面,A账户余额首先要减去1...

    用户1289394
  • 关系型数据库的ACID(原子性、一致性、隔离性与持久性)

    Coxhuang
  • 逐行阅读Spring5.X源码(十三)spring事务源码分析

    spring并不直接管理事务,而是提供了多种事务管理器,他们将事务的管理职责委托给Hibernate或JTA等持久化机制所提供的相关平台框架的事务来实现。通过这...

    源码之路
  • spring事务传播特性

    通过上面对事物的说明,有编程经验的人应该都很清楚为什么需要失误了吧?那就是为了防止出现业务逻辑上的出错,如算错账转错钱等。

    居士

扫码关注云+社区

领取腾讯云代金券