事务管理可以帮助我们保证数据的一致性
一 Spring事务机制
编程式事务管理 : Spring推荐使用TransactionTemplate,但是实际开发时我们使用
较多的还是声明式事务较多.
声明式事务管理 : 将我们从复杂的业务管理中解脱出来,获取连接、关闭连接、事务提交、回滚、
异常处理等这些操作都不用我们处理了,Spring都会帮我们处理.
声明式事务管理我们使用了AOP面向切面编程实现,本质上就是我们在目标方法执行前后进行
拦截,在目标方法执行前加入或创建一个事务,在执行方法执行后,根据实际情况选择提交或回滚事务,从而
达到增强方法的目的.
二 Spring是如何来管理事务的?
首先我们要知道Spring事务管理主要包括3个接口,Spring的事务主要是由他们三个共同完成的.
1)PlatformTransactionmanger :事务管理器
主要是用于平台相关事务的管理
主要有3个方法 :
1. commit 提交 : 用来提交我们的事务
2. rollback 回滚 : 当事务出错时可以进行回滚
3.getTransaction : 获取事务的状态
2)TransactionDefinition:事务定义信息--用来定义事务相关的属性,给事务管理器PlatformTransactionManager使用
这个接口有下面四个主要方法:
getIsolationLevel:获取隔离级别;
getPropagationBehavior:获取传播行为;
getTimeout:获取超时时间;
isReadOnly:是否只读(保存、更新、删除时属性变为false--可读写,查询时为true--只读)
事务管理器能够根据这个返回值进行优化,这些事务的配置信息,都可以通过配置文件进行配置。
3)TransactionStatus:事务具体运行状态--事务管理过程中,每个时间点事务的状态信息。
例如它的几个方法:
hasSavepoint():返回这个事务内部是否包含一个保存点,
isCompleted():返回该事务是否已完成,也就是说,是否已经提交或回滚
isNewTransaction():判断当前事务是否是一个新事务
声明式事务的优缺点:
优点
不需要在业务逻辑代码中编写事务相关代码,只需要在配置文件配置或使用注解(@Transaction),这种方式没有侵入性。
缺点
声明式事务的最细粒度作用于方法上,如果像代码块也有事务需求,只能变通下,将代码块变为方法。
这就是小喵从网上查找到的相关资料
希望对大家有所帮助
(^_^)~喵~!!
来源:oschina
链接:https://my.oschina.net/u/4232197/blog/3215762