1、事务管理简介

一组业务操作ABCD,要么全部成功,要么全部不成功。

1.1 特性:ACID

  • 原子性:整体
  • 一致性:完成
  • 隔离性:并发
  • 持久性:结果

1.2 隔离问题

  • 脏读:一个事务读到另一个事务没有提交的数据
  • 不可重复读:一个事务读到另一个事务已提交的数据(update)
  • 虚读(幻读):一个事务读到另一个事务已提交的数据(insert)

1.3 隔离级别

  • read uncommitted:读未提交。
  • read committed:读已提交。解决脏读。
  • repeatable read:可重复读。解决:脏读、不可重复读。
  • serializable :串行化。都解决,单事务。

2、Spring事务管理

2.1 顶级接口

  1. PlatformTransactionManager

    平台事务管理器,spring要管理事务,必须使用事务管理器进行事务配置时,必须配置事务管理器。

  2. TransactionDefinition

    事务详情(事务定义、事务属性),spring用于确定事务具体详情,

    例如:隔离级别、是否只读、超时时间 等

    进行事务配置时,必须配置详情。spring将配置项封装到该对象实例。

  3. TransactionStatus

    事务状态,spring用于记录当前事务运行状态。例如:是否有保存点,事务是否完成。

    spring底层根据状态进行相应操作。

2.2 事务状态

2.3 事务定义

PROPAGATION_REQUIRED , required , 必须  【默认值】
支持当前事务,A如果有事务,B将使用该事务。
如果A没有事务,B将创建一个新的事务。
PROPAGATION_SUPPORTS ,supports ,支持
支持当前事务,A如果有事务,B将使用该事务。
如果A没有事务,B将以非事务执行。
PROPAGATION_MANDATORY,mandatory ,强制
支持当前事务,A如果有事务,B将使用该事务。
如果A没有事务,B将抛异常。
PROPAGATION_REQUIRES_NEW , requires_new ,必须新的
如果A有事务,将A的事务挂起,B创建一个新的事务
如果A没有事务,B创建一个新的事务
PROPAGATION_NOT_SUPPORTED ,not_supported ,不支持
如果A有事务,将A的事务挂起,B将以非事务执行
如果A没有事务,B将以非事务执行
PROPAGATION_NEVER ,never,从不
如果A有事务,B将抛异常
如果A没有事务,B将以非事务执行
PROPAGATION_NESTED ,nested ,嵌套
A和B底层采用保存点机制,形成嵌套事务。
掌握:PROPAGATION_REQUIRED、PROPAGATION_REQUIRES_NEW、PROPAGATION_NESTED

最新文章

  1. Java面试题整理一(侧重多线程并发)
  2. Python~迭代
  3. 雷克萨斯-RC
  4. 闲扯 『 document.write 』
  5. 理解IEnumerator+IEnumerable这种接口思想
  6. How to retrieve instance parameters from an uninstantiated (uninserted) family
  7. 71 Query Rank Min Max Successor of BST
  8. 开源混淆工具ProGuard配置详解及配置实例
  9. 更改Magento的base url
  10. 简析 addToBackStack使用和Fragment执行流程
  11. Window服务初级教程以及log4net配置文件初始化
  12. PV、UV、IP的区别
  13. VS2008远程调试方法
  14. 开发MOSS自定义字段类型
  15. 原生ajax详解
  16. 【Linux】-NO.160.Linux.1 -【升级Centos7】
  17. Unity 查找泛型List中的相同与不同数据
  18. python str find & index 联系
  19. Django如何重设Admin密码
  20. Oracle PLSQL Demo - 27.Declare & Run Sample

热门文章

  1. String 类的常用方法都有那些?
  2. 解析STM32的库函数
  3. PowerCLI从模版批量新建虚拟机
  4. 学习DOS,个人笔记
  5. 冒泡排序算法JAVA实现版
  6. WebApplicationContext
  7. File对象目录列表器
  8. HTTP ERROR400的问题解决
  9. Elasticsearch节点下线(退役)and unassigned shards
  10. Group by后加rollup、cube、Grouping_Sets的用法区别