什么是事务?
事务时一种机制,一种操作序命令列,它包含了一组数据库操作命令,这组命令要么全部执行,要么全部不执行,因此事务是一个不可分割的工作逻辑单元。
在数据库系统上执行并发操作的是事务作为最小的控制单元来使用的。适用于多用户同事造作的数据通信系统。
简单来说就是:多个SQL作为单一逻辑进行操作,要么完全执行,要么完全不执行。
事务的四大特性是什么?
原子性:事务中的所有元素作为一个整体提交或者回滚,是不可拆分的,事务是一个完整的操作
一致性:事务完成时,数据必须是一致的,也就是说在事务开始之前,数据存储中的数据处于一直状态.保证了数据的无损
隔离性:对数据进行修改的多个事务时彼此隔离。这表明事务必须时独立的,不能同行进行操作一个数据。
持久性:事务完成后,对事务的影响是持久的,改修改即使出现系统故障也将一直保留。
如何实现事务管理?
在UserService.java接口中添加事务管理的方法
/**
* 事务管理的方法
* @param id
*/
void tranfor(Integer id);
在UserServiceIpml.java中实现
注意: @Transactional 实现事务管理的注解.
@Override
@Transactional
public void tranfor(Integer id) {
// 更新一条语句
userMapper.update("店小二", id);
// 抛出一个异常
int a = 3/0;
System.out.println("即将进行删除");
// 删除一条数据
userMapper.delete(id);
在HelloController.java中调用
@RequestMapping("/trans")
public void trans(Integer id) {
serviceImpl.tranfor(id);
}
运行,抛出全局异常
数据并没有发生改变,修改和删偶除都没有执行
在UserServiceIpml.java中将@Transactional注解注释掉运行
数据发生变化,数据修改了,但是没有删除: