• spring 声明式事务剖析


    spring事务是在数据库事务的基础上进行封装扩展, 支持原有事务的隔离级别, 加入了事务传播的概念,提供多个事务合并和分割的功能, 提供声明式事务,让事务和业务代码分开

    spring提供了三个接口供事务使用: TransacationDefinition(事务定义), PlatformTransactionManager(事务管理), TransactionStatus(事务运行时状态)

    看一下TransactionDefinition接口

    看一下PlatformTransactionManager, 里面三个方法: 获取事务, 提交事务,回滚事务

    看一下TransactionStatus, 是否是新事务, 是否有保存点, 回滚方法, 是否已回滚,刷新方法,是否已结束

    我们在spring的xml中这样的配置,大家很熟悉把

    然后在方法上添加注解:@Transactional 注解即可

    事务的传播机制:

    实验场景: 有个UserService(用来向user表中插入一个用户记录), 和 AccountService(用于给这个用户创建一个账户, 向账户表中添加一条记录)
    有个方法: 比如:
    //@Transactional(propagation = Propagation.REQUIRED)
    A(){
    userService.insert();//插入一个用户记录
    AccountService.insertAccount();//插入一个账户记录
    }
    @Transactional
    AccountServiceImpl(){
    insertAccount(){
    //c操作数据库,插入一条账户记录
    //人为制造异常
    int i = 10/0;
    }
    }

    结果为:

  • 相关阅读:
    游戏方案
    团队介绍
    【面向对象程序设计】作业四
    FIFO与LRU实现(Java)
    spring事务介绍
    微信抢红包算法
    Hibernate Dao映射配置通用接口类反射获取加载calass实例
    股票两次买卖最大收益(java)
    Eclipse安装JD-Eclipse反编译插件看源码
    Java GC调优
  • 原文地址:https://www.cnblogs.com/lvcai/p/13381543.html
Copyright © 2020-2023  润新知