Spring的事务机制

本文介绍了Spring中的事务管理,包括声明式事务和编程式事务。声明式事务基于AOP实现,通过@Transactional注解实现事务控制,无需在业务代码中掺杂事务管理,使得代码更加清晰。而编程式事务则是手动管理事务,使用上相对繁琐。文中强调了声明式事务的优越性,如非侵入式开发,但粒度只能到方法级别。
摘要由CSDN通过智能技术生成

事务调用的是数据库中的事务,运用两个文件,一个叫 binlog用来记录用户用户对数据库增删改的SQL语句信息,一个叫 redo log又称重做日志文件,用于记录事务操作的变化,记录的是数据修改之后的值,不管事务是否提交都会记录下来。

spring中的事务有两种,分别是声明式事务和编程式事务

编程式事务散列存储,没有声明式事务好

声明式事务中的思想是aop思想,本质是用拦截器,用拦截器拦截住我们使用Transactional修饰的类或方法,因为拦截住之后该类或方法就变成了事务,

当我们调用Trabscational修饰的类或者方法的时候,就把他拦截住,先去执行TransactionInterceptor的invoke方法,执行其中的invokeWithinTransaction这个方法

获取事务设置的属性,

然后获取事务管理器,

通过invoke反射获取到事务

开启事务

执行try-catch

try中调用业务逻辑方法

有异常就执行到catch里,catch就将其进行回滚了

finally执行事务清理信息

最后业务逻辑执行完提交事务

声明式事务最大的优点就是不需要在业务逻辑代码中掺杂事务管理的代码,只需在配置文件中做相关的事务规则声明或通过@Transactional注解的方式,便可以将事务规则应用到业务逻辑中。

声明式事务管理要优于编程式事务管理,这正是spring倡导的非侵入式的开发方式,使业务代码不受污染,只要加上注解就可以获得完全的事务支持。唯一不足地方是,最细粒度只能作用到方法级别,无法做到像编程式事务那样可以作用到代码块级别。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值