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

本文详细解释了数据库中脏读、幻读及不可重复读的概念,介绍了事务的四大特性(ACID),并阐述了Spring框架中五种事务隔离级别与七种传播行为的特点。
数据库的脏读、幻读、不可重复读:

1. 脏读 :一个事务读到另一个事务未提交的更新数据。
脏读就是指当一个事务正在访问数据,并且对数据进行了修改,而这种修改还没有提交到数据库中,这时,另外一个事务也访问这个数据,然后使用了这个被更新后的数据。

2. 幻读 : 一个事务读到另一个事务已提交的新插入的数据。
例如第一个事务对一个表中的数据进行了修改,这种修改涉及到表中的全部数据行。同时第二个事务向表中插入一行新数据。那么第一个事务发现表中还有没有修改的数据行,就好象发生了幻觉一样。 

3. 不可重复读 :
一个事务读到另一个事务已提交的更新数据。
指一个事务两次对同一行数据查询,由于第二个事务在此期间对此行数据进行了修改导致第一个事务两次读取到的同一行数据不同称之为不可重复读。

事务的4个属性:ACID
A 原子性(atomicity):整个交易中的所有操作,要么全部完成,要么全部不完成,不可能停滞在中间某个环节。交易在执行过程中发生错误,会被回滚(Rollback)到交易开始前的状态。
C 一致性(consistency):在事务开始之前和结束以后,数据库的完整性限制没有被破坏。
 I  隔离性(isolation):两个事务的执行是互不干扰的,一个事务不可能看到其他事务运行时,中间某一时刻的数据。
D 持久性(durability):事务完成后,事务对形成的影响是持久的,不能被撤销,即使系统崩溃。

Spring事务管理:
   


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


在TransactionDefinition接口中定义了五个不同的事务隔离级别

1、isolation_default:这是一个PlatfromTransactionManager默认的隔离级别,使用数据库默认的事务隔离级别。
另外四个Spring与JDBC的隔离级别都是一样的
2、isolation_read_uncommitted(读操作未提交):这是事务最低的隔离级别,它充许别外一个事务可以看到这个事务未提交的数据。这种隔离级别会产生脏读,不可重复读和幻像读

3、isolation_read_committed(读操作已提交):保证一个事务修改的数据提交后才能被另外一个事务读取。另外一个事务不能读取该事务未提交的数据。这种事务隔离级别可以避免脏读出现,但是可能会出现不可重复读和幻像读。

4、isolation_repeatable_read(可重复读):这种事务隔离级别可以防止脏读,不可重复读。但是可能出现幻像读。它除了保证一个事务不能读取另一个事务未提交的数据外,还保证了避免下面的情况产生(不可重复读)。

5、isolation_serializable(可串行化):这是花费最高代价但是最可靠的事务隔离级别。事务被处理为顺序执行。防止了脏读,不可重复读外,幻像读。



在TransactionDefinition接口中定义了七个事务传播行为级别。

1、propagation_required: 如果存在一个事务,则支持当前事务。如果没有事务则开启一个新的事务。

2、propagation_supports: 如果存在一个事务,支持当前事务。如果没有事务,则以非事务的执行。但是对于事务同步的事务管理器,propagation_supports与不使用事务有少许不同。

3、propagation_mandatory:如果已经存在一个事务,支持当前事务。如果没有一个活动的事务,则抛出异常。

4、propagation_requires_new:总是开启一个新的事务。如果一个事务已经存在,则将这个存在的事务挂起。

5、propagation_not_supported:总是非事务地执行,并挂起任何存在的事务。

6、propagation_never总是非事务地执行,如果存在一个活动事务,则抛出异常

7、propagation_nested:如果一个活动的事务存在,则运行在一个嵌套的事务中. 如果没有活动事务, 则按TransactionDefinition.propagation_required属性执行. 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值