简说Spring的事务机制和Spring是如何管理事务的
  TEZNKK3IfmPf 2023年11月14日 22 0

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

缺点

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

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月14日 0

暂无评论

推荐阅读
  TEZNKK3IfmPf   2024年05月17日   46   0   0 JSpspring
  TEZNKK3IfmPf   2024年04月19日   37   0   0 事务分布式
TEZNKK3IfmPf