数据库保障事务的机制如下


spring事务管理

在业务层模拟某个业务,注册用户和自动发送新人报到帖这两个业务视作一个事务
代码如下(两种方法):

@Transactional(isolation = Isolation.READ_COMMITTED, propagation = Propagation.REQUIRED)public Object save1(){//新增用户User user = new User();user.setUsername("alpha");user.setSalt(CommunityUtil.generateUUID().substring(0,5));user.setPassword(CommunityUtil.md5("123"+user.getSalt()));user.setEmail("alpha@qq.com");user.setHeaderUrl("http://image.nowcoder.com/head/99t.png");user.setCreateTime(new Date());userMapper.insertUser(user);//新增帖子DiscussPost post = new DiscussPost();post.setUserId(user.getId());post.setTitle("hello!");post.setContent("新人报道!");post.setCreateTime(new Date());dicussPostMapper.insertDiscussPost(post);Integer.valueOf("abc");return "abc";}public Object save2(){transactionTemplate.setIsolationLevel(TransactionDefinition.ISOLATION_READ_COMMITTED);transactionTemplate.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRED);return transactionTemplate.execute(new TransactionCallback<Object>() {@Overridepublic Object doInTransaction(TransactionStatus transactionStatus) {//新增用户User user = new User();user.setUsername("beta");user.setSalt(CommunityUtil.generateUUID().substring(0,5));user.setPassword(CommunityUtil.md5("123"+user.getSalt()));user.setEmail("beta@qq.com");user.setHeaderUrl("http://image.nowcoder.com/head/999t.png");user.setCreateTime(new Date());userMapper.insertUser(user);//新增帖子DiscussPost post = new DiscussPost();post.setUserId(user.getId());post.setTitle("你好!");post.setContent("我是新人!");post.setCreateTime(new Date());dicussPostMapper.insertDiscussPost(post);Integer.valueOf("abc");return "abc";}});}

在测试类中分别对两种方法进行测试,由于Integer.valueOf("abc");报错,该事务失败应该回滚,因此事务内前面的代码也回滚了,整个事务没有执行。

牛客网社区项目——p3.4事务管理相关推荐

  1. Java牛客网社区项目——知识点面试题

    Java牛客网社区项目--知识点&面试题 持续更新中(ง •̀_•́)ง 文章目录 Java牛客网社区项目--知识点&面试题 请简要介绍一下你的项目? 什么是Spring框架? 对Sp ...

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

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

  3. 2019牛客网高级项目

    本项目是一个基于SpringBoot的社区平台,实现了牛客网讨论区的功能.实现了邮箱注册.验证码登录.发帖.评论.私信.点赞.关注.统计网站访问次数等功能,数据库使用Mybatis.Redis,使用K ...

  4. 仿牛客网社区开发--核心功能模块

    1.过滤敏感词 我们想在某个网站上发布一些内容的时候,网站会对我们所发布的内容进行过滤,如果发现我的内容里包含一些色情.暴力等非法词汇,会把这些词汇隐去,即不显示或者打码,那么这种行为就叫过滤敏感词. ...

  5. 牛客网中级项目学习笔记(一)

    牛客中级项目学习: Controller 解析web请求 Service 业务层 DAO(data access object)数据处理层 database 底层数据库 重定向 代码如下: @Requ ...

  6. [牛客网中级项目]第四章用户注册登陆管理

    目录 1. 预习 1.1 拦截器: 1.2 MD5加密算法: 2. 内容: 3. 注册: 3.1 注册要实现的功能: 3.2 代码实现: 3.2.1 建立LoginCotroller.class 3. ...

  7. 牛客网实战项目详细到每一步(更新中)

    一技术架构 Spring Boot Spring Spring MVC MyBatics Redis Kafka Elasticsearch重点的提高性能的技术 Spring Security, Sp ...

  8. 2022-1-13牛客网C++项目—— 第二章 Linux 多进程开发(一)

    复习用的问题 进程和程序之间的关系是什么? 进程包含了哪些信息? 一.程序当中包含了一系列的信息,这些信息用于描述如何创建一个进程. 1)二进制格式标识:描述文件的格式,内核根据这个信息来解释文件中的 ...

  9. 2021-12-11牛客网C++项目——Linux编程介绍入门(二)

    1.15 目录操作函数 mkdir 函数 /*#include <sys/stat.h>#include <sys/types.h>int mkdir(const char * ...

最新文章

  1. python储存在ftp_python实现FTP
  2. Vue后台管理系统实现登录功能
  3. C#中数组、ArrayList和List三者的区别(转) ,加修改
  4. ubuntu下解压缩zip,tar,tar.gz和tar.bz2文件
  5. 【rman】list archivelog all与list backup of archivelog all
  6. arm体系结构与编程_RISCV中文版面市! MIPS、ARM、RISCV三驾马车配齐,奔向体系结构教学的新黄金时代!...
  7. Uber无人车事故又有新内情曝光:为竞争盲目冒进,瘾大技术差
  8. Mysql 中 show full processlist
  9. 哈工大刘铭:开放式知识图谱的自动构建技术
  10. 华为5ipro详细参数使用功能_华为nova6se和nova5ipro的参数配置对比评价
  11. 2021Java面试题及答案整理(最新汇总版)
  12. 量子力学在计算机上的应用论文,量子力学论文.doc
  13. matlab做nmf矩阵分解,进阶理解非负矩阵分解(NMF)
  14. java获取系统dpi_Java DPI介绍
  15. 2009级 华中科技大学 计算机学院 本科生名单,华中科技大学2009届本科生.doc
  16. busboy中文文件名乱码问题
  17. 阿里云国际站代理商:利用RDS MySQL数据库云开发ToDo List
  18. (5)CC3200学习之串口
  19. 如何去除搜索引擎上的广告
  20. 工作了3年的JAVA程序员应该具备什么技能?

热门文章

  1. 动力学分析基础(一)
  2. 关于灰度共生矩阵的一点知识(MATLAB)
  3. 重磅 | 华为发布绝杀计算战略!投15亿美元打造开放生态,全球最快AI训练集群Atlas 900,绝了!...
  4. mysql 幻读的隔离_MySQL的RR隔离级别与幻读问题
  5. Mongodb 安装详解
  6. 关于开发微信公众号获取手机用户运动数据的功能实现思路
  7. ctf.show web2 最简单的SQL注入
  8. python测速程序_利用Python对网站进行测速
  9. ubuntu16.04安装IDEA
  10. CNN系列:GoogleNet:深入卷积架构(Going Deeper with Convolutions)