【仿牛客网笔记】 Spring Boot进阶,开发社区核心功能-事务管理
添加评论中会用到事务管理。
解决的程度不同,层级不同。我们一般选择中间的级别。
选择时既能满足业务的需要,又能保证业务的安全性,在这样的前提下我们追求一个更高的性能。
第一类丢失更新
图中是没有事务隔离的情况
第二类丢失更新
脏读
不可重复读:结果不一致
幻读:行数不一致
事务隔离级别
中间两个解决了一部分的问题,幻读是可以被接受的。
数据库保障数据的机制,两种实现方式,一种是悲观锁,另一种是乐观锁。数据库中自带的就都是悲观锁。乐观锁默认没有,需要自己实现。
所谓的悲观锁就是看待问题非常的悲观,如果并发的话一定有问题,既然又问题就提前对问题加锁。加锁的话有两种锁,一种是共享锁S锁,另一种是排它锁X锁。
乐观锁需要我们去实现,总是乐观的看待问题,即是并发了也不会认为有问题,该什么操作什么操作,如果遇到了什么问题再去加锁。当我们更改数据的时候我们去看数据有没有变,如果变了,在处理的过程中有人改了,我们应该放弃这次 操作,否则我们就提交数据。我们通常通过实版本号,时间戳等检查变没变。
在开发过程中Spring对开发提供了支持。
Spring中有Transaction Management中有事务管理。
演示事务管理,模拟某一个业务,所以代码写在service。模拟需求为注册一个用户user,第二步自动的给用户发一个帖子,一个业务 中有两个增加的操作,业务中需要保证事务。
首先注入用户User和发的帖子注入到业务中,
编写实现操作的编写实现操作的方法。
首先编写方法内的事务逻辑。
通过注解的形式管理,使其成为一个整体。任何地方报错我们都需要回滚。
@Trasaction注解需要添加参数指定隔离级别isolation,事务的传播机制是通过Propagation实现的。
传播机制:在调用业务方法的时候会不会调用另外的一个组件的业务方法。即业务方法A可能会调用业务方法B。而这两个方法,A和B都可能去管理事务,是以A的事务为准还是以B的事务为准。事务传播机制就是解决这种交叉的问题。
编写测试代码:
编程时事务的实现:
注入Bean,通过TransactionTemplate实现管理事务。
通过调用TransacationTemplate实现隔离界级别和传播机制。
execute需要重写一个方法。重写方法返回的类型和泛型是一致的。
【仿牛客网笔记】 Spring Boot进阶,开发社区核心功能-事务管理相关推荐
- 【仿牛客网笔记】项目进阶,构建安全高效的企业服务——热帖排行
p:投票数 T:发布时间间隔 G:系数,通常为1.5,1.8 计算帖子的分数 注入RedisTemplate 帖子刷新 实现定时任务 刷新帖子 实现更新帖子分数 刷新帖子分数任务 配置Trigger ...
- 【仿牛客网笔记】初识Spring Boot,开发社区首页-开发社区首页
get/set SelectDiscussPosts方法实现的是分页的方法,分页通过两个参数,一个是这一页的起始行的行号offset,另一个是这一页最多显示多少数据limit.拼接是将着两个拼接到一起 ...
- 从零开始—仿牛客网讨论社区项目(一)
主要技术架构: SpringBoot Spring SpringMVC MyBatis Redis Kakfa Elasticsearch Spring Security Spring Actator ...
- 从零开始—仿牛客网讨论社区项目(六)
主要技术架构: SpringBoot Spring SpringMVC MyBatis Redis Kakfa Elasticsearch Spring Security Spring Actator ...
- 仿牛客网社区项目 全栈总结
学习仿牛客网社区项目 代码&资源 各章节总结 第一章 第二章 第三章 第四章 第五章 第六章 第七章 第八章 争取让每个知识点都有链接可点 项目总结 网站架构图 常见面试题 MySQL Red ...
- 2021-04-10 仿牛客网第六章
一.Elasticsearch入门 仿牛客网 内容部分引用至 https://blog.csdn.net/weixin_44406146 目录 一.Elasticsearch入门 Elasticsea ...
- 云服务器上部署仿牛客网项目
云服务器上部署仿牛客网项目 安装JRE 安装Maven 安装MySQL 给mysql导入数据 安装Redis 安装kafka 安装ElasticSearch Wkhtmltopdf 安装tomcat ...
- 仿牛客网讨论社区项目—优化网站性能
性能优化: 1.考虑加入缓存优化 优化热门帖子列表 GitHub中搜索caffeine 在Maven Repository搜索caffeine配置文件,在resources文件包内的pom.xml文件 ...
- 解密电商系统-Spring boot快速开始及核心功能介绍(下)
上次说了Spring boot快速开始及核心功能介绍,本次说说配置文件相关的. Spring Boot属性配置文件详解(一) 修改端口 # application.properties: server ...
最新文章
- jsp常见获取地址函数之间的不同
- 小 X 的 AK 计划
- 流媒体服务器 php,nginx 流媒体服务器 FFmpeg 截图
- java如何找重复数字_Java如何找出数组中重复的数字
- Redis数据类型--字符串类型
- Python设置网卡自己封装的Internet类 WMI
- 排序 -> 选择排序
- audio realtek 耳机没声_window7和window10机箱前面板耳机插孔没有声音怎么解决!
- c语言串口控制单片机,利用USART实现单片机与串口通信[C语言]
- MFC学习日志(一)
- 《软件设计师教程最新版(第三版》
- Nokia手机S40平台手机开发环境的搭建的过程
- 需要升的不是舱,是京东的价值观!
- 服务器raid卡维修,服务器Raid卡故障|服务器RAID卡坏恢复数据
- 【H2O系列001】H2O概述
- c语言提取质心坐标,求图像质心的C语言实现
- MATLAB永久常数
- [数独进阶技巧]区块摒除法
- 软件测试工程师面试如何描述自动化测试是怎么实现的?
- B2C电子商务能否通吃线上线下?
热门文章
- Java中int数据占几个字节?
- 流浪地球IMAX中国票房破3亿元 成IMAX中国历史票房最高影片
- QT 手写识别功能的实现
- 解决安装Ubuntu16.04时因NVIDIA显卡造成的卡在开机logo界面的问题
- 功能测试用例自动生成算法Pairwise
- win8系统通电就会自动开机如何关闭--win10专业版
- Halcon三维测量(2):三维点云模型三角化+切片处理+边缘宽度测量
- TsMaster1.3.9版本完整解压包发布
- ASP.NET Core中数据绑定的Attribute
- 解决generated-sources中的文件无法导入问题