Spring 事务(详解)

4. Spring 事务

4.1 什么是事务?

将组操作封装成个执单元,要么全部成功要么全部失败。

  • 为什么要事务?
    如转账分为两个操作:第步操作:A 账户 -100 元,第步操作:B 账户 +100 元。如果没有事务,第步执成功了,第步执失败了,那么 A 账户平故的 100 元就“间蒸发”了。如果使事务就可以解决这个问题,让这组操作要么起成功,要么起失败。
4.1.1 事务特性

事务有4 特性(ACID):原性(Atomicity,或称不可分割性)、持久性(Consistency)
、致性(Durability)和隔离性(Isolation,称独性)。

  • 原性:个事务(transaction)中的所有操作,要么全部完成,要么全部不完成,不会结束在中
    间某个环节。事务在执过程中发错误,会被回滚(Rollback)到事务开始前的状态,就像这个
    事务从来没有执过样。
  • 致性:在事务开始之前和事务结束以后,数据库的完整性没有被破坏。这表示写的资料必须完
    全符合所有的预设规则,这包含资料的精确度、串联性以及后续数据库可以发性地完成预定的
    作。
  • 持久性:事务处理结束后,对数据的修改就是永久的,即便系统故障也不会丢失。
  • 隔离性:数据库允许多个并发事务同时对其数据进读写和修改的能,隔离性可以防多个事务
    并发执时由于交叉执导致数据的不致。事务隔离分为不同级别,包括读未提交(Read
    uncommitted)、读提交(read committed)、可重复读(repeatable read)和串行化(Serializable)。

4.2 Spring 事务的实现

MySQL 中的事务使:
事务在 MySQL 有 3 个重要的操作:开启事务、提交事务、回滚事务。

-- 开启事务
start transaction;
-- 业务执?
-- 提交事务
commit;
-- 回滚事务
rollback;
4.2.1 Spirng 编程式事务

步骤:

  1. 开启事务(获取事务)
  2. 提交事务
  3. 回滚事务

SpringBoot 内置了两个对象:DataSourceTransactionManager 来开启事务、提交或回滚事务,TransactionDefinition 是事务的属性,在开启事务的时候需要将TransactionDefinition 传递进去从获得个事务 TransactionStatus。
示例:

@RestController
public class UserController {
	 @Resource
 	private UserService userService;
	 // JDBC 事务管理器
	 @Resource
	 private DataSourceTransactionManager dataSourceTransact
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值