spring——事务管理(10分钟从入门到入土)

事务管理

1.1 回顾事务

什么是事务
在数据库开发中,一组业务逻辑操作,要么全部成功,要么全部失败。
事务有什么特定?ACID
原子性:整体,原子不可分割的。整个操作被看成一个整体,要么成功,要么失败。
一致性:数据,事务操作的前后数据一致。
隔离性:并发,两个事务之间并发访问情况。
持久性:结果,事务一旦提交,不能回滚。
隔离有什么问题?
脏读:一个事务读到了另一个事务没有提交的数据。
不可重复读:一个事务读到了另一个事务已有提交的数据(update)。
幻读:一个事务读到了另一个事务已有提交的数据(insert)。
隔离级别有那些?
读未提交:存在3个问题(脏读、不可重复读、幻读)
读已提交:解决1个问题(脏读),存在2个问题(不可重复读、幻读)
可重复读:解决2个问题(脏读、不可重复读)、存在1个问题(幻读)
串行化:解决3个问题(脏读、不可重复读、幻读)–单事务

1.2 事务详解

研究Spring事务,需要学习事务管理平台管理器:
PlatformTransactionManager
– 在平台管理器中,通过事务的定义获得事务,从而进行事务提交或回滚操作。
事务定义 TransactionDefinition 的详解:
在这里插入图片描述

传播行为:一个事务调用另一个事务,事务共享问题。

  1. PROPAGATION_REQUIRED,required:支持当前事务,如果没有事务,创建一个新的。
    A 有事务,B使用A的事务。(支持当前事务)
    A没有事务,B创建新的。()
  2. PROPAGATION_SUPPORTS,supports:支持当前事务,如果没有事务,以非事务执行。
    A 有事务,B使用A的事务。(支持当前事务)
    A没有事务,B以非事务执行。
  3. PROPAGATION_MANDATORY,mandatory:支持当前事务,如果没有事务,抛异常
    A 有事务,B使用A的事务。(支持当前事务)
    A没有事务,B抛异常。
  4. PROPAGATION_REQUIRES_NEW,requires_new:创建一个新事物,如果当前有事务,将挂起。
    A 有事务,B创建新事务,同时挂起A事务。
    A 没有事务,B创建新事务。
  5. PROPAGATION_NOT_SUPPORTED, not_supported:不支持当前事务,以非事务执行,如果有挂起
    A 有事务,B以非事务执行,同时挂起A事务。
    A 没有事务,B以非事务执行。
  6. PROPAGATION_NEVER, never:不支持当前事务,如果有抛异常。
    A 有事务,B抛异常
    A 没有事务,B以非事务执行。
  7. PROPAGATION_NESTED, nested :嵌套事务,底层使用savepoint进行嵌套事务操作。
    保存点允许回顾部分事务。
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值