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


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

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

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

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

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

  • 相关阅读:
    智慧公厕整体解决方案,厕所革命实施方案的范本
    wireshark数据包内容查找功能详解
    ComfyUI进阶:Comfyroll插件 (一)
    数据分析案例-基于随机森林模型探究电商网站推销商品的影响因素
    前端开发:JS相关的核心知识点
    【基本算法题-2022.7.31】12. 激光炸弹
    基于Python的豆果网食谱数据爬取及可视化分析系统
    数学笔记查阅
    Anki 但是Ubuntu
    新版原型和原型链详解,看完整个人都通透
  • 原文地址:https://blog.csdn.net/xue_hua_c/article/details/127651354