Spring的事务处理
事务处理的基本概念
事务处理由若干个步骤组成,这些步骤之间具有一定的逻辑关系,作为一个整体的操作过程,所有步骤必须同时操作成功或失败。
Commit:当所有的操作步骤都被完整执行后,称该事务被提交。
RollBack:由于某一操作步骤执行失败,导致所有步骤都没有被提交,则食物必须被回滚,即回到事务执行前的状态。
事务处理的特性:
ACID:
原子性Atomicity:
表示在事务执行过程中,把事务作为一个工作单元处理。
一致性Consistency:
表示事务执行前系统一致,则执行后系统也应一致。
隔离性Isolation:
表示事务访问的数据不会受其他事务所做的任何改变而影响。
持久性Durability:
表示若事务执行成功,则其产生的结果应该是持久的。
事务处理的三种方式
1.关系型数据库的事务处理
在数据库中,事务处理一般分为3个步骤:
开始事务——即接下来的操作当做一个工作单元来对待。
执行相关命令。
提交事务——是否回滚。
Begin Transaction(启动事务处理)
//事务处理步骤
Commit或RollBack(提交或回滚)
End Transaction(提交事务处理)
2.传统的JDBC事务处理
获取链接的时候使用setAutoCommit(false)方法,在整个操作结束后,调用connection 对象的commit()方法。
3.分布式事务处理
分布式事务处理即事务分布在多个资源上,由多个组件共享的事务。
分布式事务具有如下特性:
组件要在同一原子操作中与多个资源通信。
多个组件要在同一原子操作中操作。
分布式事务需要多个不同的事务管理器的合作。
Spring提供了编程式事务处理和声明式事务处理
Spring的事务处理实际是基于动态AOP处理实现的,在默认的情况下spring会使用java提供的动态代理机制,但是java的动态代理机制需要被代理的对象实现接口,因此,Spring的事务处理是通过CGLIB实现的。
编程式事务管理其核心是PlatformtransactionManager。
声明式事务管理
声明式事务管理需要一个platformTransactionmanager的实现类。
关于是使用编程式事务管理还是声明式事务管理事务较少使用编程式事务管理,否则使用声明式事务管理。