传播行为:当事务方法被另一个事务方法调用时,必须指定事务应该如何传播。

 Spring 定义了如下七中传播行为,这里以A业务和B业务之间如何传播事务为例说明:

1、PROPAGATION_REQUIRED :required , 必须。默认值,A如果有事务,B将使用该事务;如果A没有事务,B将创建一个新的事务。

2、PROPAGATION_SUPPORTS:supports ,支持。A如果有事务,B将使用该事务;如果A没有事务,B将以非事务执行。

3、PROPAGATION_MANDATORY:mandatory ,强制。A如果有事务,B将使用该事务;如果A没有事务,B将抛异常。

4、PROPAGATION_REQUIRES_NEW :requires_new,必须新的。如果A有事务,将A的事务挂起,B创建一个新的事务;如果A没有事务,B创建一个新的事务。

5、PROPAGATION_NOT_SUPPORTED :not_supported ,不支持。如果A有事务,将A的事务挂起,B将以非事务执行;如果A没有事务,B将以非事务执行。

6、PROPAGATION_NEVER :never,从不。如果A有事务,B将抛异常;如果A没有事务,B将以非事务执行。

7、PROPAGATION_NESTED :nested ,嵌套。A和B底层采用保存点机制,形成嵌套事务。

隔离级别:定义了一个事务可能受其他并发事务影响的程度。

并发事务引起的问题:

      在典型的应用程序中,多个事务并发运行,经常会操作相同的数据来完成各自的任务。并发虽然是必须的,但可能会导致以下的问题。

1、脏读(Dirty reads)——脏读发生在一个事务读取了另一个事务改写但尚未提交的数据时。如果改写在稍后被回滚了,那么第一个事务获取的数据就是无效的。

2、不可重复读(Nonrepeatable read)——不可重复读发生在一个事务执行相同的查询两次或两次以上,但是每次都得到不同的数据时。这通常是因为另一个并发事务在两次查询期间进行了更新。

3、幻读(Phantom read)——幻读与不可重复读类似。它发生在一个事务(T1)读取了几行数据,接着另一个并发事务(T2)插入了一些数据时。在随后的查询中,第一个事务(T1)就会发现多了一些原本不存在的记录。

注意:不可重复读重点是修改,而幻读重点是新增或删除。

在 Spring 事务管理中,为我们定义了如下的隔离级别:

1、ISOLATION_DEFAULT:使用后端数据库默认的隔离级别

2、ISOLATION_READ_UNCOMMITTED:最低的隔离级别,允许读取尚未提交的数据变更,可能会导致脏读、幻读或不可重复读

3、ISOLATION_READ_COMMITTED:允许读取并发事务已经提交的数据,可以阻止脏读,但是幻读或不可重复读仍有可能发生

4、ISOLATION_REPEATABLE_READ:对同一字段的多次读取结果都是一致的,除非数据是被本身事务自己所修改,可以阻止脏读和不可重复读,但幻读仍有可能发生

5、ISOLATION_SERIALIZABLE:最高的隔离级别,完全服从ACID的隔离级别,确保阻止脏读、不可重复读以及幻读,也是最慢的事务隔离级别,因为它通常是通过完全锁定事务相关的数据库表来实现的

事务的传播行为和隔离级别?相关推荐

  1. Spring事务处理,以及Spring事务的传播属性和隔离级别

    本文转自:http://www.cnblogs.com/younggun/archive/2013/07/16/3193800.html 事务的隔离级别:事务隔离级别用于处理多事务并发的情况,通常使用 ...

  2. 事务的传播行为和隔离级别[transaction behavior and isolated level]

    Spring中事务的定义: 一.Propagation : key属性确定代理应该给哪个方法增加事务行为.这样的属性最重要的部份是传播行为.有以下选项可供使用: PROPAGATION_REQUIRE ...

  3. 事务的传播性和隔离级别

    事务的传播性: 1.PROPOGATION_REQUIRES            --需要在一个事务中执行 2.PROPOGATION_SUPPOTS             --不需要在一个事务中 ...

  4. Java中事务的传播机制和隔离级别

    一.传播机制 Spring事务的传播机制是指在方法调用链中,对于已经开启的事务以及后续子方法如何处理事务.Spring框架提供了7种传播行为来控制事务的传播过程,分别为: PROPAGATION_RE ...

  5. Spring事务的传播行为和隔离级别

    ********TransactionDefinition 接口定义******************* /** * Support a current transaction, create a ...

  6. Srping事务的传播行为和隔离级别

    2019独角兽企业重金招聘Python工程师标准>>> 看原文吧! 转载于:https://my.oschina.net/tiancai/blog/184419

  7. 浅析Spring事务传播行为和隔离级别

    7个传播行为.4个隔离级别. Spring事务的传播行为和隔离级别[transaction behaviorand isolatedlevel] Spring中事务的定义: Propagation(k ...

  8. mysql事务传播属性_Spring事务传播属性和隔离级别详细介绍

    1 事务的传播属性(Propagation) 1) REQUIRED ,这个是默认的属性 Support a current transaction, create a new one if none ...

  9. Spring事务传播属性和隔离级别

    Spring事务传播属性和隔离级别 一.Spring事务传播属性(Propagation): 1) REQUIRED(默认属性) 如果存在一个事务,则支持当前事务.如果没有事务则开启一个新的事务.  ...

最新文章

  1. docker run Influxdb
  2. python如何安装pip3_如何在安装pip3以及第三方python库
  3. shmdt() 与 shmctl() 的区别
  4. tomcat错误: javax.management.MalformedObjectNameException: Invalid character ':' in value part of prop
  5. html css图标怎么跟文字并排,html - FA图标和文字环绕的HTML / CSS问题 - SO中文参考 - www.soinside.com...
  6. HAOI 2006 受欢迎的牛 (洛谷2341)
  7. python3+xlrd解析Excel
  8. 云安全到来 手动更新病毒码将成为历史
  9. 读取ZIP文件时ZipEntry的size为-1的解决办法
  10. 锐捷云教室 服务器型号,锐捷智慧云课堂方案(云教室+简单)优秀课件
  11. 修复计算机会没有桌面文件吗,电脑桌面文件不见了怎么恢复
  12. PyQt自定义控件之实现圆形图片
  13. 关于汽油动力汽车和混合动力汽车的环保问题。
  14. Cash-Secured Puts Vs. Covered Calls
  15. Spring容器是怎么初始化的?
  16. 学拳录 23退步压肘
  17. matlab求心率变异性的程序,心率变异性及其相关算法的实现
  18. 程序员非常好用的app
  19. qt,QGraphicsView实现鼠标中键拖动图片,鼠标滚轮缩放、两个窗口联动左键选点等功能(c++pyqt两个版本)
  20. 2022-2028全球与中国体脂秤市场现状及未来发展趋势

热门文章

  1. python的requests快速上手、高级用法和身份认证
  2. python 列表list相关知识
  3. Producer Consumer
  4. Android性能优化:布局优化 详细解析(含include、ViewStub、merge讲解 )
  5. I/O----复制文本文件
  6. 推断一个图片是不是伪造的方法
  7. 【转】转贴 poj分类
  8. 20120918-LIST类定义《数据结构与算法分析》
  9. 【白皮书分享】2022新职业教育洞察白皮书:“职”成机遇,“育”见未来.pdf...
  10. 什么是二次元?什么是二次元衍生创作?它的魅力何在?