简说Spring的事务机制和Spring是如何管理事务的

人盡茶涼 提交于 2020-04-06 05:30:47

事务管理可以帮助我们保证数据的一致性
一 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),这种方式没有侵入性。

缺点

声明式事务的最细粒度作用于方法上,如果像代码块也有事务需求,只能变通下,将代码块变为方法。
 

这就是小喵从网上查找到的相关资料

希望对大家有所帮助

(^_^)~喵~!!

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!