Spring事务基础介绍

事务

  • 本文只介绍声明式事务管理,即使用AOP实现,使用 @Transactional 开始事务
  • 事务角色
    • 事务管理员:发起事务方,在Spring中通常指代业务层开启事务的方法
    • 事务协调员:加入事务方,在Spring中通常指代数据层方法,也可以是业务层方法

接口介绍

  • PlatformTransactionManager:Spring事务管理器接口

    • TransactionStatus getTransaction() :获取事务状态信息

      • Spring 将事务的配置详细信息封装到 TransactionDefinition 对象中,此方法用于获得事务状态TransactionStatus

      • public interface TransactionStatus{
            boolean isNewTransaction(); // 是否是新的事务
            boolean hasSavepoint(); // 是否有恢复点
            void setRollbackOnly();  // 设置为只回滚
            boolean isRollbackOnly(); // 是否为只回滚
            boolean isCompleted; // 是否已完成
        }
        
    • void commit():提交事务

    • void rollback():回滚事务

  • TransactionDefinition:事务定义信息

    • String getName():获取事务对象名称。
    • int getlsolationLevel():获取事务的隔离级别。
    • int getPropagationBehavior():获取事务的传播行为.
    • int getTimeout():获取事务的超时时间。
    • boolean isReadOnly():获取事务是否只读。
  • TransactionStatus:事务运行状态

    • void flush():刷新事务
    • boolean hasSavepoint():获取是否存在保存点
    • boolean isCompleted():获取事务是否完成
    • boolean isNewTransaction():获取是否是新事务
    • boolean isRollbackOnly():获取是否回滚
    • void setRollbackOnly():设置事务回滚

事务传播行为

  • 介绍

    • 当事务方法被另一个事务方法调用时,需要指定事务应该如何进行传播

    • 使用 @Transactional 注解开启事务后,还需要在其中增加

常用的事务传播行为

image-20230609150010403
  • TransactionDefinition.PROPAGATION_REQUIRED
    • 若当前存在事务则加入,若没有事务则新建一个
    • 默认的事务传播行为,也是最常用的
  • TransactionDefinition.PROPAGATION_REQUIRES_NEW
    • 创建新事务,若当前存在事务则将其挂起
    • 不管外部方法是否开启事务,都会开启自己事务,且开启的事务相互独立互不干扰
  • TransactionDefinition.PROPAGATION_NESTED
    • 在外部方法开启事务时在内部开启新事务
    • 若外部方法无事务则使用PROPAGATION_REQUIRED
posted @   ---Wg---  阅读(14)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
点击右上角即可分享
微信分享提示