2021-08-14

1.事务:
事务是数据库操作的基本单元,逻辑上的一组操作,要么一起成功,要么一起失败
2.事务四个特性:
原子性
一致性
隔离性
持久性
Spring事务:
声明式事务:
(1) 基于xml配置文档
(2) 基于注解配置(重点)
@EnableTransactionManagement 配置类 开启事务注解
@Transactional 表示类或者某个方法使用事务
Spring事务管理API:
提供一个接口 代表事务管理器PlatformTransactionManager接口
这个接口针对不同的框架提供了不同的实现类

声明式事务操作:
(1) 配置类 开启事务注解 @EnableTransactionManagement
(2) 配置事务
(3) 在Service类中方法或类上添加事务注解 @Transactional

@Transactional属性:
(1)propagation:事务传播行为)propagation:事务传播行为
多事务方法直接调用,这个过程中事务如何进行管理的
事务方法:对数据库表数据进行更新的操作
REQUIRED(0),:如果当前方法有事务,就是这个事务中运行,否则开启一个新的事务
SUPPORTS(1),
MANDATORY(2),
REQUIRES_NEW(3):当前方法必须启动新事务,并在自己事务内运行,如果有事务
正在运行,当前事务将被挂起
NOT_SUPPORTED(4),
NEVER(5),
NESTED(6);
(2):isolation:事务隔离级别
事务有特性是隔离性,多个事务操作之间不会产生影响,不考虑隔离性就会有很多问题
一般有三种问题: 脏读 不可重复读 虚(幻)读
脏读:一个未提交事务读取到另一个未提交事务中的数据
700
窗口1: 张三这条数据的余额修改为100 事务A
窗口2: 将张三的余额修改为5000 事务B
回滚

    不可重复读: 一个未提交事务读取到另一个提交事务修改的数据
   
    虚读:一个未提交事务读取到另一个事务添加的数据 
   
   通过设置事务隔离级别,可以解决此问题
   
   如何查看Mysql默认隔离级别: select @@tx_isolation 

(3) timeout:超时时间
事务需要在一定时间内进行提交,如果不提交进行回滚
默认值-1.设置时间秒为单位

(4)readOnly:是否只读
读:查询操作, 写:添加 删除 修改操作
readOnly默认是false.表示可以进行增删改查操作
readOnly设置为true, 只能查询
(5)rollbackFor:回滚
设置哪些异常进行事务回滚
(6)noRollbackFor :不回滚
@Transactional(propagation = Propagation.REQUIRED,
isolation = Isolation.READ_COMMITTED, timeout = 5,
readOnly = false, rollbackFor = {NullPointerException.class})

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值