事务三连
什么是事务
事务是一组操作的集合,是一个不可分割的操作。事务会把所有的操作作为一个整体,一起向数据库提交或者是撤销操作请求。所以这组操作要么同时成功,要么同时失败。
为什么要有事务
我们在进行程序开发时,也会有事务的需求。比如转账操作: 第一步:A 账户 -100 元。 第二步:B 账户 +100 元。
如果没有事务,第一步执行成功了,第二步执行失败了,那么 A 账户的 100 元就平白无故消失了。如果使用事务就可以解决这个问题,让这一组操作要么一起成功,要么一起失败。
事务的操作
事务的操作主要有三步: 开启事务:start transaction / begin(一组操作前开启事务) 提交事务:commit(这组操作全部成功,提交事务) 回滚事务:rollback(这组操作中间任何一个操作出现异常,回滚事务)
Spring 中事务的实现
Spring 中的事务操作分为两类: 编程式事务(手动写代码操作事务)。 声明式事务(利用注解自动开启和提交事务)。
准备工作
我们先准备好数据以及访问数据的代码:
整体结构:

数据库: log_info:

user_info:

Spring 编程事务
package com.hbu.springtransdemo.controller;
import com.hbu.springtransdemo.service.UserInfoService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
import org.springframework.transaction.TransactionDefinition;
import org.springframework.transaction.TransactionStatus;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
{
UserInfoService userInfoService;
DataSourceTransactionManager dataSourceTransactionManager;
TransactionDefinition transactionDefinition;
String {
dataSourceTransactionManager.getTransaction(transactionDefinition);
userInfoService.registryUser(name, password);
log.info();
dataSourceTransactionManager.commit(transactionStatus);
;
}
}















