赞
踩
事务调用的是数据库中的事务,运用两个文件,一个叫 binlog用来记录用户用户对数据库增删改的SQL语句信息,一个叫 redo log又称重做日志文件,用于记录事务操作的变化,记录的是数据修改之后的值,不管事务是否提交都会记录下来。
spring中的事务有两种,分别是声明式事务和编程式事务
编程式事务散列存储,没有声明式事务好
声明式事务中的思想是aop思想,本质是用拦截器,用拦截器拦截住我们使用Transactional修饰的类或方法,因为拦截住之后该类或方法就变成了事务,
当我们调用Trabscational修饰的类或者方法的时候,就把他拦截住,先去执行TransactionInterceptor的invoke方法,执行其中的invokeWithinTransaction这个方法
获取事务设置的属性,
然后获取事务管理器,
通过invoke反射获取到事务
开启事务
执行try-catch
try中调用业务逻辑方法
有异常就执行到catch里,catch就将其进行回滚了
finally执行事务清理信息
最后业务逻辑执行完提交事务
声明式事务最大的优点就是不需要在业务逻辑代码中掺杂事务管理的代码,只需在配置文件中做相关的事务规则声明或通过@Transactional注解的方式,便可以将事务规则应用到业务逻辑中。
声明式事务管理要优于编程式事务管理,这正是spring倡导的非侵入式的开发方式,使业务代码不受污染,只要加上注解就可以获得完全的事务支持。唯一不足地方是,最细粒度只能作用到方法级别,无法做到像编程式事务那样可以作用到代码块级别。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。