【仿牛客网笔记】 Spring Boot进阶,开发社区核心功能-事务管理

请添加图片描述
添加评论中会用到事务管理。
请添加图片描述
解决的程度不同,层级不同。我们一般选择中间的级别。
选择时既能满足业务的需要,又能保证业务的安全性,在这样的前提下我们追求一个更高的性能。

第一类丢失更新
图中是没有事务隔离的情况
请添加图片描述
第二类丢失更新
请添加图片描述
脏读
请添加图片描述
不可重复读:结果不一致
请添加图片描述
幻读:行数不一致
请添加图片描述
事务隔离级别
中间两个解决了一部分的问题,幻读是可以被接受的。
请添加图片描述
数据库保障数据的机制,两种实现方式,一种是悲观锁,另一种是乐观锁。数据库中自带的就都是悲观锁。乐观锁默认没有,需要自己实现。

所谓的悲观锁就是看待问题非常的悲观,如果并发的话一定有问题,既然又问题就提前对问题加锁。加锁的话有两种锁,一种是共享锁S锁,另一种是排它锁X锁。
乐观锁需要我们去实现,总是乐观的看待问题,即是并发了也不会认为有问题,该什么操作什么操作,如果遇到了什么问题再去加锁。当我们更改数据的时候我们去看数据有没有变,如果变了,在处理的过程中有人改了,我们应该放弃这次 操作,否则我们就提交数据。我们通常通过实版本号,时间戳等检查变没变。请添加图片描述
在开发过程中Spring对开发提供了支持。
Spring中有Transaction Management中有事务管理。
请添加图片描述
演示事务管理,模拟某一个业务,所以代码写在service。模拟需求为注册一个用户user,第二步自动的给用户发一个帖子,一个业务 中有两个增加的操作,业务中需要保证事务。
首先注入用户User和发的帖子注入到业务中,
请添加图片描述

编写实现操作的编写实现操作的方法。
首先编写方法内的事务逻辑。
通过注解的形式管理,使其成为一个整体。任何地方报错我们都需要回滚。
@Trasaction注解需要添加参数指定隔离级别isolation,事务的传播机制是通过Propagation实现的。
请添加图片描述
请添加图片描述
请添加图片描述
传播机制:在调用业务方法的时候会不会调用另外的一个组件的业务方法。即业务方法A可能会调用业务方法B。而这两个方法,A和B都可能去管理事务,是以A的事务为准还是以B的事务为准。事务传播机制就是解决这种交叉的问题。

编写测试代码:
请添加图片描述
编程时事务的实现:
注入Bean,通过TransactionTemplate实现管理事务。
通过调用TransacationTemplate实现隔离界级别和传播机制。
execute需要重写一个方法。重写方法返回的类型和泛型是一致的。请添加图片描述请添加图片描述
请添加图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值