Spring事务(一)

2022-02-12  本文已影响0人  倚仗听江

Spring事务的实现原理:

  1. Spring事务底层是基于数据库事务和AOP机制的
  2. ⾸先对于使⽤了@Transactional注解的Bean,Spring会创建⼀个代理对象作为Bean
  3. 当调⽤代理对象的⽅法时,会先判断该⽅法上是否加了@Transactional注解
  4. 如果加了,那么则利⽤事务管理器创建⼀个数据库连接
  5. 并且修改数据库连接的autocommit属性为false,禁⽌此连接的⾃动提交。
  6. 然后执⾏当前⽅法,⽅法中会执⾏sql
  7. 执⾏完当前⽅法后,如果没有出现异常就直接提交事务
  8. 如果出现了异常,并且这个异常是需要回滚的就会回滚事务,否则仍然提交事务

Spring的事务可分为编程式事务和声明式事务
声明式事务存在的问题:

  1. 最小粒度也要作用在方法上,那么如果这个方法里有一些如RPC远程调用、消息发送、缓存更新、文件写入等操作。本地事务回滚了,这些操作也无法回滚。如果是编程式事务的话,业务代码中就会清清楚楚看到什么地方开启事务,什么地方提交,什么时候回滚。
  2. 相对而言声明式事务更容易失效
    如以下几种场景就可能导致声明式事务失效:
上一篇 下一篇

猜你喜欢

热点阅读