spring 事物隔离级别和传播行为

转载 2016年06月01日 09:47:21


首先,要了解的是什么是数据库的隔离级别。在一个典型的应用中,并发是不可避免的,多个事务并发运行,操作同一个数据来完成任务。并发可能会导致以下问题:

脏读(Dirty read):
脏读发生在一个事务读取了被另一个事务改写但还未提交的数据时。如果这些改变在稍后被回滚,那么之前的事务读取的到数据就是无效的。

不可重复读(Nonrepeatable read):
不可重复读发生在一个事务执行相同的查询两次或两次以上,但每一次的查询结果不同时。这通常是由于另一个并发的事务在两次查询之间更新了数据。

幻读(Phantom read):
幻读是一个事务读取几行记录后,另一个事务插入了一些记录,幻读就发生了。在后来的查询中第一个事务就会发现有一些原来没有的额外的记录。

spring的事务隔离级别

ISOLATION_DEFAULT:
使用数据库默认的隔离级别。

ISOLATION_READ_UNCOMMITTED:
允许读取改变了的还未提交的数据,可能导致脏读、不可重复读和幻读。

ISOLATION_READ COMMITTED:
允许并发事务提交之后读取,可以避免脏读,可能导致重复读和幻读。

ISOLATION_REPEATABLE_READ:
对相同字段的多次读取结果一致,可导致幻读。

ISOLATION_SERIALIZABLE:
完全服从ACID的原则,确保不发生脏读、不可重复读和幻读。

可以根据自己的系统对数据的要求采取适应的隔离级别,因为隔离牵涉到锁定数据库中的记录,对数据正性要求越严格,并发的性能也越差。

spring的事务传播行为

spring事务的传播行为说的是当一个方法调用另一个方法时,事务该如何操作。

PROPAGATION_MANDATORY:
该方法必须运行在一个事务中。如果当前事务不存在则抛出异常。

PROPAGATION_NESTED:
如果当前存在一个事务,则该方法运行在一个嵌套的事务中。被嵌套的事务可以从当前事务中单独的提交和回滚。如果当前不存在事务,则开始一个新的事务。各厂商对这种传播行为的支持参差不齐,使用时需注意。

PROPAGATION_NEVER:
当前方法不应该运行在一个事务中。如果当前存在一个事务,则抛出异常。

PROPAGATION_NOT_SUPPORTED:
当前方法不应该运行在一个事务中。如果一个事务正在运行,它将在该方法的运行期间挂起。

PROPAGATION_REQUIRED:
该方法必须运行在一个事务中。如果一个事务正在运行,该方法将运行在这个事务中。否则,就开始一个新的事务。

PROPAGATION_REQUIRES_NEW:
该方法必须运行在自己的事务中。它将启动一个新的事务。如果一个现有的事务正在运行,将在这个方法的运行期间挂起。

PROPAGATION_SUPPORTS:
当前方法不需要事务处理环境,但如果一个事务已经在运行的话,这个方法也可以在这个事务里运行。

spring 事务传播行为和事务隔离级别

1、Spring声明式事务 声明式事务(declarative transaction management)是Spring提供的对程序事务管理的方式之一。 Spring的声明式事务顾...
  • yujin753
  • yujin753
  • 2014年12月29日 20:30
  • 2612

spring的事务传播行为、隔离级别和事务的一些基本概念

事务ACID: 原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)。ISOLATION_DEFAULT:使用数据库默认的...
  • paincupid
  • paincupid
  • 2015年09月02日 16:25
  • 1676

spring事务隔离级别及传播特性

Spring在TransactionDefinition接口中定义这些属性 在TransactionDefinition接口中定义了五个不同的事务隔离级别 ISOLATION_DEFAUL...
  • hijiankang
  • hijiankang
  • 2013年06月25日 23:33
  • 7603

关于spring事物的隔离级别和事物的传播行为

事物的隔离级别: Spring事务的隔离级别有五种  a)DEFAULT:使用数据库默认的事务隔离级别.  b)UNCOMMITTED:这是事务最低的隔离级别,它充许令外一个事务可以看到这个...
  • wanghang88
  • wanghang88
  • 2016年11月01日 19:58
  • 381

spring事物的七种事物传播属性行为及五种隔离级别

首先,说说什么事务(Transaction)。 事务,就是一组操作数据库的动作集合。事务是现代数据库理论中的核心概念之一。如果一组处理步骤或者全部发生或者一步也不执行,我们称该组处理步骤为一个事务。...
  • zalan01408980
  • zalan01408980
  • 2018年01月03日 20:47
  • 28

spring事物的隔离级别

  • 2013年12月02日 20:32
  • 4KB
  • 下载

spring 事物的传播方式以及隔离级别

7个传播行为,4个隔离级别,  Spring事务的传播行为和隔离级别[transaction behavior and isolated level]2007-08-01 16:33事务的传...
  • sd4015700
  • sd4015700
  • 2013年12月06日 11:26
  • 712

Spring事物的传播特性and隔离级别

今天配置spring传播特性  便系统了解一下隔离级别 事实上REQUEST时比较常用的  当A的SERVICE调用B的SERVICE时  若其中一个抛异常 两个事物均会回滚    ...
  • u013939918
  • u013939918
  • 2017年01月07日 11:04
  • 135

spring事务的传播行为与隔离级别

在实际开发过程中,特别是在并发高、更新数据量大、关系表比较多的情况下,经常会遇到关于事务的问题。 首先,要了解的是什么是数据库的隔离级别。在一个典型的应用中,并发是不可避免的,多个事务并发运行,操作...
  • moliqin
  • moliqin
  • 2011年10月22日 23:20
  • 6529

spring事务的传播行为与隔离级别详解

关于Spring的事务有7个传播行为,4个隔离级别。
  • XingKong22star
  • XingKong22star
  • 2014年11月24日 17:04
  • 539
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:spring 事物隔离级别和传播行为
举报原因:
原因补充:

(最多只允许输入30个字)