《JAVA EE轻量级框架整合开发-Spring+Spring MVC+MyBatis》 课件 第9章 Spring事务管理.pdf
文本预览下载声明
JAVA EE轻量级框架整合开发
第9章Spring事务管理
Spring事务管理的概念
事务的基本配置
声明式事务
割的工作单元。通过事务,数据库能将逻辑相关的一组操作绑定在一起,以便保持数据的完整性。
事务有4个重要特性,简称ACID。
A:Automicity,原子性,即事务中的所有操作要么全部执行,要么全部不执行。
C:Consistency,一致性,事务执行的结果必须是使数据库从一个一致状态变到另一个一致状态。
I:lsolation,隔离性,即一个事务的执行不能被另一个事务影响。
D:Durabillity,持久性,即事务提交后将被永久保存。
9.1 Spring事务管理接口
层),以便能够使用事务的特性来管理具体的业务。
Spring的事务管理,主要用到两个事务相关的接口。
事务管理器接口PlatformTransactionManager
事务定义接口TransactionDefinition
息。PlatformTransactionManager接口有两个常用的实现类:
说程序抛出runtime异常的时候才会进行回滚,其他异常不回滚。
播行为常量、事务默认超时时限常量,及对它们的操作。
1.事务隔离级别常量
在应用程序中,多个事务并发运行,操作相同的数据,可能会引起脏读,不可重复读,幻读等问题。
刚改写的数据,如果这时第一个事务回滚了,这样第二个事务读取到的数据就是无效的“脏数据”。
间,第二个事务访问并改写了该数据,导致第一个事务两次查询同一个数据得到的结果不一样。
一查询条件查询数据,第一次按该查询条件读取了几行数据,这时第二个事务进来了,插入或删除了
一些数据时,然后第一个事务再次按同一条件查询,发现多了一些原本不存在的记录或者原有的记录
不见了。
为了解决并发问题,TransactionDefinition接口定义了5个事务隔离常量如下:
离级别最低,未解决任何并发问题,会产生脏读,不可重复读和幻像读。
另外一个事务不能读取该事务未提交的数据。解决脏读,但还存在不可重复读与幻读。
能与效率最低。
2.事务传播行为常量
事务传播行为是指处于不同事务中的方法在相互调用时,执行期间事务的维护情况。例如,当一个事务方法B
调用另一个事务方法A时,应当明确规定事务如何传播,比方可以规定A方法继续在B方法的现有事务中运行,也
可以规定A方法开启一个新事务,在新事务中运行,现有事务先挂起,等A方法的新事务执行完毕后再恢复。
TransactionDefinition接口一共定义了七种传播行为常量说明如下:
其中执行。
事务执行完毕。
务挂起。
当前没有事务,则创建一个新事务。
3.默认事务超时时限
值一般使用默认值即可。
9.2 Spring事务管理的实现
码的方式嵌入到了主业务代码里面,好处是能提供更加详细的事务管理,但由于编程式事务主业务与事务代码
混在一起,不易分离,耦合度高,不利于维护与重用。声明式事务则基于AOP方式,能将主业务操作与事务规
则进行解耦。能在不影响业务代码的具体实现情况下实现事务管理。所以比较常用的是声明式事务。声明式事
务又有两种具体的实现方式:基于XML配置文件的方式和基于注解的方式。
9.2.1没有事务管理的情况分析
项目案例:模拟支付宝转账,张三李四原本各有账户余额2000元,张三转账500元给李四,但转账过程中间出现
异常。(项目源码见本书配套源码:第9章/没有事务管理的情况/spring13)
9.2.2利用xml配置实现事务管理
成功,要么一起失败。这里利用了Spring的事务管理机制进行处理。
项目案例:模拟支付宝转账,张三李四原本各有账户余额2000元,张三转账500元给李四,但转账过程中
书配套源码:第9章/使用xml实现事务管理/spring14)
9.2.2利用xml配置实现事务管理
(1)拷贝项目spring13为spring14,修改配置文件,添加文件头约束,添加事务管理模块。
文件头需要添加下述内容:
/schema/tx
!--定义事务管理器--
bean id=txManager
/bean
!--编写事务通知--
tx:attributes
/tx:attributes
/tx:advicey
9.2.2利用x
显示全部