spring事务浅析

2 篇文章 0 订阅
Spring事务
1、事务概念:事务是一系列动作,它们综合在一起,组成一个完整的工作单元,这些动作必须全部完成,若有一个失败,会回滚到初始状态。
2、事务的特性:4个特性ACID(原子性、一致性、隔离性、持久性)
原子性(Atomicity):事务是一个原子操作,由一系列动作组成。事务的原子性确保动作要么全部完成,要么完全不起作用。
一致性(Consistency):一旦事务完成(不管成功还是失败),系统必须确保它所建模的业务处于一致的状态,而不会是部分完成部分失败。在现实中的数据不应该被破坏。
隔离性(Isolation):可能有许多事务会同时处理相同的数据,因此每个事务都应该与其他事务隔离开来,防止数据损坏。
持久性(Durability):一旦事务完成,无论发生什么系统错误,它的结果都不应该受到影响,这样就能从任何系统崩溃中恢复过来。通常情况下,事务的结果被写到持久化存储器中。
3、事务的行为(7种)
1)PROPAGATION_REQUIRED :支持当前事务,若当前无事务则新建事务。
2)PROPAGATION_SUPPORTS:支持当前事务,若当前无事务就按非事务执行。
3)PROPAGATION_MANDATORY:支持当前事务,若当前无事务则产生异常。
4)PROPAGATION_REQUIRES_NEW:不支持当前事务,新建事务,若当前有事务,则把该事务挂起。
5)PROPAGATION_NOT_SUPPORTED:不支持当前事务,以非事务的方式进行,若当前有事务,则把该事务挂起。
6)PROPAGATION_NEVER:不支持当前事务,以非事务的方式进行,若当前有事务,则产生异常。
7)PROPAGATION_NESTED:如果没有,就新建一个事务;如果有,就在当前事务中嵌套其他事务。
4、事务的隔离级别(5种)
1)ISOLATION_DEFAULT:默认使用数据库的隔离级别。
2)ISOLATION_READ_UNCOMMITTED:最低的隔离级别,它允许另外一个事务可以看到该事务未提交的数据,此隔离级别可能产生脏读、不可重复读和幻读。
3)ISOLATION_READ_COMMITTED:保证一个事务提交数据以后才可以被另外的事务读取到。此隔离级别可以保证脏读,但是不可重复度和幻读是有可能出现的。
4)ISOLATION_REPEATABLE_READ:这个隔离级别可以保证脏读和不可重复读,但是幻读还是有可能出现。
5)ISOLATION_SERIALIZABLE:花费最高,但是是最可靠的隔离方式,事务处理是顺序执行的,可以保证脏读、不可重复读和幻读。
注:脏读(一个事务读取另外一个事务未提交的数据),不可重复读(一个事务读取了另外一个事务的多次提交的数据),幻读也叫虚读(一个事务读取另外一个事务插入的数据)
5、事务的相关接口

1)事务管理器接口:PlateformTransactionManager,常用的事务管理器有DataSourceTransactionManager和HibernateTransaction,分别对应jdbc和hibernate。
2)事务定义接口:TransactionDefinition,可以定义事务的行为、隔离级别、事务超时、只读状态、回滚(rollBack)和不回滚(noRollBack)
3)事务状态接口:TransactoionStatus
6、事务的使用分类
事务可分为编程式事务(很少使用)和声明式事务。声明式事务又有三种使用方式,TransactionFactoryBean的增强式(使用较少)、面向切面的AspectJ的配置xml的方式、注解方式,后面这两种使用较多

代码实例:http://git.oschina.net/lyg1/spring_transaction
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值