当前位置: 首页 > news >正文

中国石油工程建设有限公司网站株洲网站优化找哪家

中国石油工程建设有限公司网站,株洲网站优化找哪家,更改wordpress主题字体,济南网站建设哪里便宜前言 本篇介绍spring中事务的实现方式,如何实现声明式事务,对事物进行参数的设置,了解事务的隔离级别和事务的传播机制;如有错误,请在评论区指正,让我们一起交流,共同进步! 文章目录…

前言

本篇介绍spring中事务的实现方式,如何实现声明式事务,对事物进行参数的设置,了解事务的隔离级别和事务的传播机制;如有错误,请在评论区指正,让我们一起交流,共同进步!


文章目录

  • 前言
  • 1. spring中事务实现的方式
  • 2. 实现声明式事务
  • 3. 设置@Transactional的参数
  • 4. spring 的事务隔离级别
  • 5. 事务的传播机制 - spring
  • 总结

本文开始

1. spring中事务实现的方式

spring中事务实现的方式:
① 编程式事务 - 手动 写代码去操作事务
实现主要过程:开启事务 + 提交事务 + 回滚事务;- 都需要手动
② 声明式事务 - 使用注释操作事务 - 自动
实现主要过程:进入方法自动开启事务,执行完方法自动提交事务,出现错误,自动回滚事务;- 让事务自动开启+自动提交事务

事务目的:实现事务,当程序异常时,会进行回滚操作;

手动实现事务太过于麻烦,一般都使用声明式事务(自动),下面就介绍一下声明式事务;

2. 实现声明式事务

实现方式:
① 在要执行的方法(事务)上,加上注释@Transactional; - 推荐使用
② 在类上加注释@Transactional;

	//在方法上声明事务@Transactionalpublic int add() {//......}//在类上声明事务@Transactionalpublic class User {//......}

3. 设置@Transactional的参数

设置参数的方式:在注释括号中添加参数 - @Transactional(xxx)
@Transactional的参数:

  • value 和 transactionManager : 指定选择哪个事务管理器
  • propagation: 事务的传播行为
  • islation: 设置事务的隔离级别
  • readOnly: 设置事务的为 只读事务
  • timeout: 设置事务的超时时间

4. spring 的事务隔离级别

添加参数示例:@Transactional(islation = Isolatino.DEFAULT)
① Isolatino.DEFAULT: 事务的默认隔离级别 - 以客户端连接事务的隔离级别为主;
② Isolatino.READ_UNCOMMITTED: 读未提交
③ Isolatino.READ_COMMITTED:读已提交
④ Isolatino.REPEATABLE_READ: 可重复读
⑤ Isolatino.SERIALIZABLE_READ: 串行化

客户端可以设置数据库隔离级别:
spring 可认为是一个客户端,可以设置数据库隔离级别;
当前连接的事务隔离级别,也就是spring客户端的隔离级别;

默认事务隔离级别 与 当前连接(spring)的事务隔离级别 默认是一样的;
数据库隔离级别以当前spring设置的事务隔离级别为准,如果没设置就是默认的事务隔离级别;
设置当前连接的事务(当前spring客户端)隔离级别:

//查询事务 - 此命名使用mysql 5.7版本
select @@global.tx_isolation,@@tx_isolation;
//设置事务隔离级别
set session transaction isolation level SERIALIZABLE

问题:设置@Transactional,程序出现异常,但被 try catch捕获,虽捕获但没有处理异常(抛出异常),导致事务没有回滚;
解决方式:让事务在异常情况下也可以实现回滚;
1.抛出异常 - throw e
2. 手动回滚事务: TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();;

5. 事务的传播机制 - spring

什么是事务的传播机制?
事务的传播机制:规定多个事务相互调用,事务的执行行为的机制; (执行行为 = 各方法传递的行为)

事务的传播机制:

  • Propagation.REQUIRED: 默认事务传播机制,当前存在事务,就加入事务;当前没有事务,就创建一个新的事务;
  • Propagation.SUPPORT S: 当前存在事务,就加入事务;当前没有事务,就以非事务方式继续运行;
    【注】以非事务方式运行,事务调用链上遇到异常,不关注,不会再进行回滚操作;(不再是一个整体,各执行各的)
  • Propagation.MANDATORY: 当前存在事务,就加入事务;当前没有事务,就抛出异常;
  • Propagation.REQUIRES_NEW:创建一个新的事务,如果当前存在事务,就把当前事务挂起;- 开启自己新的事务,且相互独立;
  • Propagation.NOT_SUPPORTED: 以非事务方式运行,如果当前存在事务,就把当前事务挂起;
  • Propagation.NEVER: 以非事务方式运行,如果当前存在事务,就抛出异常;
  • Propagation.NESTED: 当前存在事务,就创建一个事务作为嵌套事务来运行;如果没有当前事务,相当于默认事务Propagation.REQUIRED;- 嵌套事务在嵌套进事务时会标记保存点,嵌套事务出现异常,会回到标记点(回滚),不影响整个事务链(存档);

在这里插入图片描述
【注】事务c异常,在事务c中做了手动回滚事务的操作;该异常不会被事务a感知到;


总结

✨✨✨各位读友,本篇分享到内容如果对你有帮助给个👍赞鼓励一下吧!!
感谢每一位一起走到这的伙伴,我们可以一起交流进步!!!一起加油吧!!!

http://www.yayakq.cn/news/121415/

相关文章:

  • 南京网站建设要多少钱网站代备案服务
  • 门户网站的基本特征多选题我想弄个网站
  • 电商网站建设与运营方向就业前景wp怎样做可以下载的网站
  • 梅州企业网站网站建设公司调研汇报ppt
  • 龙华网站建设专业定制企业兰州财经大学网站开发与维护
  • 搭建企业网站的步骤哪个网站可以自己做名片
  • 怎么搭建网站后台有专门做房孑特卖的网站吗
  • 网站建设欲网站维护wordpress docx插件
  • 湖南营销型网站建设磐石网络省钱百度网站怎么做的
  • 宁波淘宝网站建设wordpress+谷歌加速
  • 骨干专业群建设任务书网站大学生怎么做网站支付模块
  • 企业网站seo优化公司网络服务租赁合同范本
  • html网站管理020网站建设和维护费用
  • 网站可信太原哪里做网站
  • 织梦做旅游网站垂直电商网站如何做内容运营
  • 济南做网站建设的公司服务好的企业做网站
  • wordpress建站做客户端长春制作网站定制
  • 建筑资料网站有哪些网站打开显示站点目录
  • c 网站开发案例详解光盘企业网站建设方案 ppt
  • 如花建站公司网站是做的谷歌的
  • 网站seo如何优化云南建管微信小程序
  • 网站建设人群定位示范校建设 成果网站
  • 寻找网站开发手机网站专题页
  • 网站开发费用是否资本化使用下载的整站asp源代码建设自己的私人网站需要注意哪些
  • 关于网站建设的投标书广告公司是做什么的
  • 国外做鞋子的网站吗步骤的骤怎么写
  • 大良营销网站建设策划网页程序开发语言
  • 设计师网站接单网站设计 知识产权
  • 做网站有什么js特效五金技术支持东莞网站建设
  • 高端网站源码上市公司网站维护