添加评论中会用到事务管理。

解决的程度不同,层级不同。我们一般选择中间的级别。
选择时既能满足业务的需要,又能保证业务的安全性,在这样的前提下我们追求一个更高的性能。

第一类丢失更新
图中是没有事务隔离的情况

第二类丢失更新

脏读

不可重复读:结果不一致

幻读:行数不一致

事务隔离级别
中间两个解决了一部分的问题,幻读是可以被接受的。

数据库保障数据的机制,两种实现方式,一种是悲观锁,另一种是乐观锁。数据库中自带的就都是悲观锁。乐观锁默认没有,需要自己实现。

所谓的悲观锁就是看待问题非常的悲观,如果并发的话一定有问题,既然又问题就提前对问题加锁。加锁的话有两种锁,一种是共享锁S锁,另一种是排它锁X锁。
乐观锁需要我们去实现,总是乐观的看待问题,即是并发了也不会认为有问题,该什么操作什么操作,如果遇到了什么问题再去加锁。当我们更改数据的时候我们去看数据有没有变,如果变了,在处理的过程中有人改了,我们应该放弃这次 操作,否则我们就提交数据。我们通常通过实版本号,时间戳等检查变没变。
在开发过程中Spring对开发提供了支持。
Spring中有Transaction Management中有事务管理。

演示事务管理,模拟某一个业务,所以代码写在service。模拟需求为注册一个用户user,第二步自动的给用户发一个帖子,一个业务 中有两个增加的操作,业务中需要保证事务。
首先注入用户User和发的帖子注入到业务中,

编写实现操作的编写实现操作的方法。
首先编写方法内的事务逻辑。
通过注解的形式管理,使其成为一个整体。任何地方报错我们都需要回滚。
@Trasaction注解需要添加参数指定隔离级别isolation,事务的传播机制是通过Propagation实现的。



传播机制:在调用业务方法的时候会不会调用另外的一个组件的业务方法。即业务方法A可能会调用业务方法B。而这两个方法,A和B都可能去管理事务,是以A的事务为准还是以B的事务为准。事务传播机制就是解决这种交叉的问题。

编写测试代码:

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

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

  1. 【仿牛客网笔记】项目进阶,构建安全高效的企业服务——热帖排行

    p:投票数 T:发布时间间隔 G:系数,通常为1.5,1.8 计算帖子的分数 注入RedisTemplate 帖子刷新 实现定时任务 刷新帖子 实现更新帖子分数 刷新帖子分数任务 配置Trigger ...

  2. 【仿牛客网笔记】初识Spring Boot,开发社区首页-开发社区首页

    get/set SelectDiscussPosts方法实现的是分页的方法,分页通过两个参数,一个是这一页的起始行的行号offset,另一个是这一页最多显示多少数据limit.拼接是将着两个拼接到一起 ...

  3. 从零开始—仿牛客网讨论社区项目(一)

    主要技术架构: SpringBoot Spring SpringMVC MyBatis Redis Kakfa Elasticsearch Spring Security Spring Actator ...

  4. 从零开始—仿牛客网讨论社区项目(六)

    主要技术架构: SpringBoot Spring SpringMVC MyBatis Redis Kakfa Elasticsearch Spring Security Spring Actator ...

  5. 仿牛客网社区项目 全栈总结

    学习仿牛客网社区项目 代码&资源 各章节总结 第一章 第二章 第三章 第四章 第五章 第六章 第七章 第八章 争取让每个知识点都有链接可点 项目总结 网站架构图 常见面试题 MySQL Red ...

  6. 2021-04-10 仿牛客网第六章

    一.Elasticsearch入门 仿牛客网 内容部分引用至 https://blog.csdn.net/weixin_44406146 目录 一.Elasticsearch入门 Elasticsea ...

  7. 云服务器上部署仿牛客网项目

    云服务器上部署仿牛客网项目 安装JRE 安装Maven 安装MySQL 给mysql导入数据 安装Redis 安装kafka 安装ElasticSearch Wkhtmltopdf 安装tomcat ...

  8. 仿牛客网讨论社区项目—优化网站性能

    性能优化: 1.考虑加入缓存优化 优化热门帖子列表 GitHub中搜索caffeine 在Maven Repository搜索caffeine配置文件,在resources文件包内的pom.xml文件 ...

  9. 解密电商系统-Spring boot快速开始及核心功能介绍(下)

    上次说了Spring boot快速开始及核心功能介绍,本次说说配置文件相关的. Spring Boot属性配置文件详解(一) 修改端口 # application.properties: server ...

最新文章

  1. jsp常见获取地址函数之间的不同
  2. 小 X 的 AK 计划
  3. 流媒体服务器 php,nginx 流媒体服务器 FFmpeg 截图
  4. java如何找重复数字_Java如何找出数组中重复的数字
  5. Redis数据类型--字符串类型
  6. Python设置网卡自己封装的Internet类 WMI
  7. 排序 -> 选择排序
  8. audio realtek 耳机没声_window7和window10机箱前面板耳机插孔没有声音怎么解决!
  9. c语言串口控制单片机,利用USART实现单片机与串口通信[C语言]
  10. MFC学习日志(一)
  11. 《软件设计师教程最新版(第三版》
  12. Nokia手机S40平台手机开发环境的搭建的过程
  13. 需要升的不是舱,是京东的价值观!
  14. 服务器raid卡维修,服务器Raid卡故障|服务器RAID卡坏恢复数据
  15. 【H2O系列001】H2O概述
  16. c语言提取质心坐标,求图像质心的C语言实现
  17. MATLAB永久常数
  18. [数独进阶技巧]区块摒除法
  19. 软件测试工程师面试如何描述自动化测试是怎么实现的?
  20. B2C电子商务能否通吃线上线下?

热门文章

  1. Java中int数据占几个字节?
  2. 流浪地球IMAX中国票房破3亿元 成IMAX中国历史票房最高影片
  3. QT 手写识别功能的实现
  4. 解决安装Ubuntu16.04时因NVIDIA显卡造成的卡在开机logo界面的问题
  5. 功能测试用例自动生成算法Pairwise
  6. win8系统通电就会自动开机如何关闭--win10专业版
  7. Halcon三维测量(2):三维点云模型三角化+切片处理+边缘宽度测量
  8. TsMaster1.3.9版本完整解压包发布
  9. ASP.NET Core中数据绑定的Attribute
  10. 解决generated-sources中的文件无法导入问题