spring事务详解(四)测试验证

系列目录

spring事务详解(一)初探事务

spring事务详解(二)简单样例

spring事务详解(三)源码详解

spring事务详解(四)测试验证

spring事务详解(五)总结提高

一、引子

在第一节中我们知道spring为了支持数据库事务的ACID四大特性,在底层源码中对事务定义了6个属性:事务名称隔离级别超时时间是否只读传播机制回滚机制。其中隔离级别传播机制光看第一节的描述还是不够的,需要实际测试一下方能放心且记忆深刻。

二、环境

2.1 业务模拟

模拟用户去银行转账,用户A转账给用户B,

需要保证用户A扣款,用户B加款同时成功或失败回滚。

2.2 环境准备

测试环境

mysql8+mac,测试时使用的mysql8(和mysql5.6的设置事务变量的语句不同,不用太在意)

测试准备

创建一个数据库test,创建一张表user_balance用户余额表。id主键,name姓名,balance账户余额。

 1 mysql> create database test;
 2 Query OK, 1 row affected (0.05 sec)  3  4 mysql> use test;  5 Database changed  6 mysql> CREATE TABLE `user_balance` (  7 -> `id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'ID主键',  8 -> `name` varchar(20) DEFAULT NULL COMMENT '姓名',  9 -> `balance` decimal(10,0) DEFAULT NULL COMMENT '账户余额', 10 -> PRIMARY KEY (`id`) 11 -> ) ENGINE=InnoDB AUTO_INCREMENT=24 DEFAULT CHARSET=utf8; 12 Query OK, 0 rows affected, 1 warning (0.15 sec)

初始化数据,2个账户都是1000元:

mysql> INSERT INTO `user_balance` VALUES ('1', '张三', '1000'), ('2', '李四', '1000'); Query OK, 2 rows affected (0.06 sec) Records: 2 Duplicates: 0 Warnings: 0 mysql> select * from user_balance; 
+----+--------+---------+ | id | name | balance | +----+--------+---------+ | 1 | 张三 | 1000 | | 2 | 李四 | 1000 | +----+--------+---------+ 2 rows in set (0.00 sec)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值