一、事务传播属性(propagation)

1、REQUIRED,默认属性

此级别下,会为每一个调用的方法创建一个逻辑事务域,如果前面的方法已经创建了事务,那么后面的方法支持当前事务,如果当前没有事务,会重新建立事务

2、MANDATORY(务必的)

支持当前事务,如果没有则抛异常

3、NEVER

非事务执行,如果有事务则抛异常

4、NOT_SUPPORTED

非事务操作,如果有事务则挂起

5、REQUIRES_NEW

新建事务,如果当前存在事务则挂起当前

6、SUPPORTS

支持当前事务,如果没有当前事务,则以非事务方式执行

7、NESTED(镶嵌)

支持当前事务,新增SavePoint点,与当前事务同步提交或回滚。

嵌套事务就是内层事务依赖于外层事务,外层事务失败,回滚内外层事务,内层事务失败,不影响外层事务

二、事务隔离级别(Isolation Level)

事务并发引起的三种情况

1、Dirty Reads 脏读

一个事务对数据进行更新操作还未提交,另一个事务也来操作这个未提交数据,如果第一个事务操作失败,数据回滚了,而第二个事务用了未提交的数据,也就是用了错误数据,就造成了脏读

如果第一个事务向数据库插入一条数据,还有后期操作所以没有提交,第二个事务在第一个事务没提交的情况下读取了第一个事务插入的数据,如果第一个事务后期操作出问题了,那么数据回滚,这导致第二个事务取错了数据,也就是脏读

2、Non-Repeatable Reads 不可重复读

一个事务要多次读取同一数据,该事务还未结束时,另一个事务就对那个数据做了修改,那么第一个事务本该读到的是同样数据,被第二个事务修改后就多到的不同了,造成不可重复读

3、Phantom Reads 幻读

第一个事务在查询符合某条件数据时,此时另一事务插入一条符合条件的新数据,第一个事务就感觉莫名多了一条,仿佛出现幻觉,就叫幻读

4、不可重复读和幻读区别:

不可重复读是在同一事物中多次查询,而过程中其他事物对数据做了修改或删除,返回不同的结果

幻读在同一事物中多次查询,而过程中其他事物做了插入操作,得到不同结果

表面上看区别是不可重复读是其他事务对数据修改或删除造成的问题,幻读是其他事务对数据进行插入造成的问题

五种隔离级别

1、DEFAULT 默认

使用的是数据库默认设置的隔离级别,依赖于数据库事务

2、READ_UNCOMMITTED 读未提交

事务最低隔离级别,允许另外事务可以看到未提交数据,容易造成脏读、不可重复读和幻读

3、READ_COMMITTED 读已提交

保证已修改的数据提交后才能被另外事务读取到,另外事务不能读取未提交数据,避免了脏读,不可避免不可重复读和幻读

4、REPEATABLE_READ 可重复读

防止脏读和不可重复读,可能出现幻读

5、SERIALIZABLE 串行化

花费代价最高,事务被处理为顺序执行,脏读、不可重复读、幻读均可避免

Spring事务传播简介的更多相关文章

  1. spring事务传播机制实例讲解

    http://kingj.iteye.com/blog/1680350   spring事务传播机制实例讲解 博客分类:   spring java历险     天温习spring的事务处理机制,总结 ...

  2. Spring事务传播机制

    Spring在TransactionDefinition接口中规定了7种类型的事务传播行为,它们规定了事务方法和事务方法发生嵌套调用时事务如何进行传播,即协调已经有事务标识的方法之间的发生调用时的事务 ...

  3. Spring事务传播特性的浅析——事务方法嵌套调用的迷茫

    Spring事务传播机制回顾 Spring事务一个被讹传很广说法是:一个事务方法不应该调用另一个事务方法,否则将产生两个事务.结果造成开发人员在设计事务方法时束手束脚,生怕一不小心就踩到地雷. 其实这 ...

  4. Spring事务传播机制和数据库隔离级别

    Spring事务传播机制和数据库隔离级别 转载 2010年06月26日 10:52:00 标签: spring / 数据库 / exception / token / transactions / s ...

  5. spring 事务传播机制

    spring 事务 传播机制 描述的 事务方法直接相互调用,父子事物开启,挂起,回滚 等的处理方式. 绿色的 那几个 我认为比较重要. 1 , @Transactional(propagation=P ...

  6. 事务、事务特性、事务隔离级别、spring事务传播特性

    事务.事务特性.事务隔离级别.spring事务传播特性   1.什么是事务: 事务是程序中一系列严密的操作,所有操作执行必须成功完成,否则在每个操作所做的更改将会被撤销,这也是事务的原子性(要么成功, ...

  7. 什么是事务、事务特性、事务隔离级别、spring事务传播特性

    1.什么是事务: 事务是程序中一系列严密的操作,所有操作执行必须成功完成,否则在每个操作所做的更改将会被撤销,这也是事务的原子性(要么成功,要么失败). 2.事务特性: 事务特性分为四个:原子性(At ...

  8. spring事务传播实现源码分析

    转载. https://blog.csdn.net/qpfjalzm123/article/details/83717367 本文只是对spring事务传播实现的流程进行简单的分析,如有不对之处请指出 ...

  9. Spring事务传播属性介绍(二).mandatory、not_supported、never、supports

    Required.Required_New传播属性分析传送门:https://www.cnblogs.com/lvbinbin2yujie/p/10259897.html Nested传播属性分析传送 ...

随机推荐

  1. 搭建企业内部yum仓库(centos6+centos7+epel源)

    搭建自己的yum仓库,将自己制作好的rpm包,添加到自己的yum源中. yum仓库服务端配置如下 : 1. 创建yum仓库目录 mkdir -p /data/yum_data/cd /data/yum ...

  2. 【POJ 2318】TOYS 叉积

    用叉积判断左右 快速读入写错了卡了3小时hhh #include<cmath> #include<cstdio> #include<cstring> #includ ...

  3. ElasticSearch快照备份及恢复

    工作步骤: 1:建立备份快照数据挂载点,即共享文件目录(Shared Filesystem): 2:建立快照仓储repository: 3:建立snapshot快照备份: 4:恢复snapshot快照 ...

  4. Spring注解@PostConstruct与@PreDestroy

    关于在spring  容器初始化 bean 和销毁前所做的操作定义方式有三种: 第一种:通过@PostConstruct 和 @PreDestroy 方法 实现初始化和销毁bean之前进行的操作 第二 ...

  5. 22 java当中的数组

    class Test { public static void main(String args[]) { //数组的静态声明法 int arr[]={5,2,7,9,0}; //数组的动态声明法 i ...

  6. shell实现两个数的相加

    刚开始的时候写,一直写不对:看似简单的功能,但是一定要小心:函数的定义: funciton functionName {.....}在functionName和{之间一定有空格啊! 我就是没加空格,就 ...

  7. JQuery触发radio或checkbox的change事件

    在JQuery中,当给radio或checkbox添加一个change事件时,如果它的值发生变化就会触发change事件;本文将详细介绍如何利用JQuery触发Checkbox的change事件需要了 ...

  8. 【BZOJ-4548&3658】小奇的糖果&Jabberwocky 双向链表 + 树状数组

    4548: 小奇的糖果 Time Limit: 10 Sec  Memory Limit: 256 MBSubmit: 103  Solved: 47[Submit][Status][Discuss] ...

  9. 【BZOJ-4435】Juice Junctions 最小割树(分治+最小割)+Hash

    4435: [Cerc2015]Juice Junctions Time Limit: 20 Sec  Memory Limit: 512 MBSubmit: 20  Solved: 11[Submi ...

  10. BZOJ1407 [Noi2002]Savage

    Description Input 第1行为一个整数N(1<=N<=15),即野人的数目. 第2行到第N+1每行为三个整数Ci, Pi, Li表示每个野人所住的初始洞穴编号,每年走过的洞穴 ...