Spring事务管理(详解+实例)

http://www.mamicode.com/info-detail-1248286.html

传统的事务分为ACID

A:原子性,表示一个事务的多个操作要么同时成功,要么同时失败

C:一致性,表示一个原理的业务处理不能存在部分成功,部分失败的情况

I:隔离性,多个事务执行时,数据需要隔离

D:持久性,事务执行完成后,数据持久化,可以恢复

 

spring的事务定义分为如下几个部分:

传播机制、隔离机制、超时时间、是否只读、回滚机制

 

7种事务传播机制:

propogation_required:当前方法必须运行在事务中,如果事务存在,则加入该事务,否则开启一个新事务

propogation_required_new:当前方法必须运行在自己的事务中,当前方法执行时,该事务挂起

propogation_supports:当前方法不需要事务上下文,如果存在事务则加入

propogation_not_supported:当前方法不支持事务上下文,如果存在事务则挂起

propogation_mandatory:当前事务必须运行在事务中,如果不再存事务则报异常

popogation_never:当前事务不能运行在事务当中,如果存在事务则报异常

propogation_nested:事务嵌套,如果存在当前事务,该方法运行在嵌套事务中,嵌套的事务可以独立的提交或回滚,如果不存在事务开启一个新事务

 

事务的隔离级别:

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

并发事务影响的问题:

1.脏读:一个事务读取了并发事务尚未提交的数据,如果该数据回滚则数据就无效了

2.不可重复读:多次读取数据同一数据结果不一致

3.幻读:多次执行同一查询,结果不一致

 

五大隔离级别:

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

2.ISOLATION_READ_UNCOMMITTED:读未提交,最低的隔离级别,允许读取尚未提交的数据变更

3.ISOLATION_READ_COMMITTED允许读取并发事务已经提交的数据

4.ISOLATION_REPEATABLE_READ:可重复读,同一个字段多次读取结果一致

5.ISOLATION_SERIALIZABLE:串行读,最高隔离机制,完全锁定事务相关表

 

posted @ 2017-03-04 12:16  李高峰  阅读(973)  评论(0编辑  收藏  举报