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

南宁网站建设公司免费网络营销方式

南宁网站建设公司,免费网络营销方式,护士做二类学分网站,快手等视频网站做推广Spring 事务【隔离级别与传播机制】🍎一.事务隔离级别🍒1.1 事务特性回顾🍒1.2 事务的隔离级别(5种)🍒1.3 事务隔离级别的设置🍎二.Spring 事务传播机制🍒2.1 Spring 事务传播机制的作用🍒2.2 事…

Spring 事务【隔离级别与传播机制】

  • 🍎一.事务隔离级别
    • 🍒1.1 事务特性回顾
    • 🍒1.2 事务的隔离级别(5种)
    • 🍒1.3 事务隔离级别的设置
  • 🍎二.Spring 事务传播机制
    • 🍒2.1 Spring 事务传播机制的作用
    • 🍒2.2 事务传播机制种类(7 种)
    • 🍒2.3 Spring 事务传播机制使用
  • 🍎三.总结

🍎一.事务隔离级别

🍒1.1 事务特性回顾

事务有4 大特性(ACID),原子性、持久性、⼀致性、隔离性

具体概念如下:
原子性:⼀个事务(transaction)中的所有操作,要么全部完成,要么全部不完成,不会结束在中间某个环节。事务在执⾏过程中发⽣错误,会被回滚(Rollback)到事务开始前的状态,就像这个事务从来没有执⾏过⼀样

一致性:在事务开始之前和事务结束以后,数据库的完整性没有被破坏。这表示写⼊的资料必须完全符合所有的预设规则,这包含资料的精确度、串联性以及后续数据库可以⾃发性地完成预定的⼯作

● 持久性:事务处理结束后,对数据的修改就是永久的,即便系统故障也不会丢失

● 隔离性:数据库允许多个并发事务同时对其数据进⾏读写和修改的能⼒,隔离性可以防⽌多个事务并发执⾏时由于交叉执⾏⽽导致数据的不⼀致。事务隔离分为不同级别,包括读未提交(Readuncommitted)、读提交(read committed)、可重复读(repeatable read)和串⾏化(Serializable)

上⾯ 4 个属性,可以简称为ACID

原子性(Atomicity,或称不可分割性)
—致性(Consistency)
隔离性(lsolation,又称独立性)
持久性( Durability) 

🍒1.2 事务的隔离级别(5种)

设置事务的隔离级别是⽤来保障多个并发事务执⾏更可控,更符合操作者预期的

⽽事务的隔离级别就是为了防⽌,其他的事务影响当前事务执⾏的⼀种策略

Spring 中事务隔离级别可以通过 @Transactional 中的 isolation 属性进⾏设置,具体操作如下图所示:
在这里插入图片描述
** Spring 中事务隔离级别包含以下 5 种:**

  1. Isolation.DEFAULT:以连接的数据库的事务隔离级别为主(默认)
  2. Isolation.READ_UNCOMMITTED:读未提交,可以读取到未提交的事务,存在脏读
  3. Isolation.READ_COMMITTED:读已提交,只能读取到已经提交的事务,解决了脏读,存在不可重复读
  4. Isolation.REPEATABLE_READ:可重复读,解决了不可重复读,但存在幻读(MySQL默认级别)
  5. Isolation.SERIALIZABLE:串⾏化,可以解决所有并发问题,但性能太低

从上述介绍可以看出,相⽐于 MySQL 的事务隔离级别,Spring 的事务隔离级别只是多了⼀个Isolation.DEFAULT(以数据库的全局事务隔离级别为主)

🍒1.3 事务隔离级别的设置

Spring 中事务隔离级别只需要设置 @Transactional ⾥的 isolation 属性即可,具体实现代码如下:

@RequestMapping("/save")
@Transactional(isolation = Isolation.SERIALIZABLE)
public Object save(User user) {// 业务实现
}

🍎二.Spring 事务传播机制

🍒2.1 Spring 事务传播机制的作用

Spring 事务传播机制定义了多个包含了事务的⽅法,相互调⽤时,事务是如何在这些⽅法间进⾏传递的

事务隔离级别是保证多个并发事务执⾏的可控性的(稳定性的),⽽事务传播机制是保证⼀个事务在多个调⽤⽅法间的可控性的(稳定性的)

⼀样,它有不同的隔离⽅式(酒店隔离还是居家隔离),是为了保证疫情可控,然⽽在每个⼈的隔离过程中,会有很多个执⾏的环节,
⽐如酒店隔离,需要负责⼈员运送、物品运送、消杀原⽣活区域、定时核算检查和定时送餐等很多环节,
⽽事务传播机制就是保证⼀个事务在传递过程中是可靠性的,回到本身案例中就是保证每个⼈在隔离的过程中可控的

⽽事务传播机制解决的是⼀个事务在多个节点(⽅法)中传递的问题,如下图所示:

在这里插入图片描述

🍒2.2 事务传播机制种类(7 种)

Spring 事务传播机制包含以下 7 种:

  1. Propagation.REQUIRED:默认的事务传播级别,它表示如果当前存在事务,则加入该事务;如果当前没有事务,则创建⼀个新的事务

  2. Propagation.SUPPORTS:如果当前存在事务,则加⼊该事务;如果当前没有事务,则以⾮事务的⽅式继续运⾏

  3. Propagation.MANDATORY:(mandatory:强制性)如果当前存在事务,则加⼊该事务;如果当前没有事务,则抛出异常

  4. Propagation.REQUIRES_NEW:表示创建⼀个新的事务,如果当前存在事务,则把当前事务挂起。也就是说不管外部⽅法是否开启事务,Propagation.REQUIRES_NEW 修饰的内部⽅法会新开启⾃⼰的事务,且开启的事务相互独⽴,互不⼲扰

  5. Propagation.NOT_SUPPORTED:以⾮事务⽅式运⾏,如果当前存在事务,则把当前事务挂起

  6. Propagation.NEVER:以⾮事务⽅式运⾏,如果当前存在事务,则抛出异常

  7. Propagation.NESTED:如果当前存在事务,则创建⼀个事务作为当前事务的嵌套事务来运⾏;如果当前没有事务,则该取值等价于PROPAGATION_REQUIRED

以上 7 种传播⾏为,可以根据是否⽀持当前事务分为以下 3 类:
在这里插入图片描述
以情侣关系以房子为例来举例:
在这里插入图片描述

🍒2.3 Spring 事务传播机制使用

以下代码实现中,先开启事务先成功插⼊⼀条⽤户数据,然后再执⾏⽇志报错,⽽在⽇志报错是发⽣了异常,观察 propagation = Propagation.REQUIRED 的执⾏结果\

@RestController
public class UserController {@Resourceprivate UserService userService;@Transactional(propagation = Propagation.REQUIRED)@RequestMapping("/add3")if (userInfo == null  || !StringUtils.hasLength(userInfo.getUsername()) || !StringUtils.hasLength(userInfo.getPassword()))return 0;int userResult = userService.add(userInfo);System.out.println("添加用户:" + userResult);LogInfo logInfo = new LogInfo();logInfo.setName("添加用户");logInfo.setDesc("添加用户结果" + userResult);int logResult = logService.add(logInfo);return userResult;}

REQUIRED: Transactional(propagation = Propagation.REQUIRED

加入当前事务: Transactional(propagation = Propagation.REQUIRED)方法调用流程: controller/add -〉用户添加方法->〉日志添加方法当日志添加方法出现异常之后,加入事务的执行结果是:
1、用户添加成功的数据也回滚了
2、日志添加数据也回滚了

NESTED: @Transactional(propagation = Propagation.NESTED)

嵌套事务:@Transactional(propagation = Propagation.NESTED)方法调用流程: controller/add -〉用户添加方法->日志添加方法当日志添加方法出现异常之后,嵌套事务的执行结果是:
1、用户添加不受影响,添加用户成功了
2、日志添加失败,因为发生异常回滚了事务

嵌套事务(NESTED)和加⼊事务(REQUIRED )的区别:

● 整个事务如果全部执⾏成功,⼆者的结果是⼀样的
● 如果事务执⾏到⼀半失败了,那么加⼊事务整个事务会全部回滚;⽽嵌套事务会局部回滚,不会影响上⼀个⽅法中执⾏的结果

🍎三.总结

Spring 事务使⽤中,重点的内容有 3 个:

  1. 在 Spring 项⽬中使⽤事务,⽤两种⽅法⼿动操作和声明式⾃动提交,其中后者使⽤的最多,在⽅法上添加 @Transactional 就可以实现了
  2. 设置事务的隔离级别 @Transactional(isolation = Isolation.SERIALIZABLE),Spring 中的事务隔离级别有 5 种
  3. 设置事务的传播机制 @Transactional(propagation = Propagation.REQUIRED),Spring 中的事务传播级别有 7 种

在这里插入图片描述


文章转载自:
http://arquebusier.pwkq.cn
http://beget.pwkq.cn
http://acquitment.pwkq.cn
http://kraut.pwkq.cn
http://megacephalic.pwkq.cn
http://osteometry.pwkq.cn
http://archaebacteria.pwkq.cn
http://exocentric.pwkq.cn
http://unwinnable.pwkq.cn
http://undercliff.pwkq.cn
http://lighthouseman.pwkq.cn
http://alemannic.pwkq.cn
http://amentaceous.pwkq.cn
http://madonna.pwkq.cn
http://contagiously.pwkq.cn
http://malapportion.pwkq.cn
http://vivisector.pwkq.cn
http://eellike.pwkq.cn
http://pusley.pwkq.cn
http://compliance.pwkq.cn
http://psychophysics.pwkq.cn
http://bion.pwkq.cn
http://fluvialist.pwkq.cn
http://southwardly.pwkq.cn
http://fernanda.pwkq.cn
http://maja.pwkq.cn
http://chromograph.pwkq.cn
http://gasdynamic.pwkq.cn
http://animal.pwkq.cn
http://zanza.pwkq.cn
http://siluroid.pwkq.cn
http://diarize.pwkq.cn
http://gestion.pwkq.cn
http://chasmogamy.pwkq.cn
http://asne.pwkq.cn
http://psychology.pwkq.cn
http://astrionics.pwkq.cn
http://unceremoniousness.pwkq.cn
http://gabrielle.pwkq.cn
http://facer.pwkq.cn
http://circuitry.pwkq.cn
http://doe.pwkq.cn
http://coulter.pwkq.cn
http://automotive.pwkq.cn
http://cypriot.pwkq.cn
http://cardiotonic.pwkq.cn
http://inquietly.pwkq.cn
http://extortionist.pwkq.cn
http://hadrosaurus.pwkq.cn
http://chlorophyllite.pwkq.cn
http://wartime.pwkq.cn
http://subeconomic.pwkq.cn
http://premiere.pwkq.cn
http://meridional.pwkq.cn
http://hematin.pwkq.cn
http://dissect.pwkq.cn
http://butt.pwkq.cn
http://sunderland.pwkq.cn
http://pentylenetetrazol.pwkq.cn
http://ophiuran.pwkq.cn
http://fishyback.pwkq.cn
http://drencher.pwkq.cn
http://abridgement.pwkq.cn
http://apogee.pwkq.cn
http://landside.pwkq.cn
http://laniate.pwkq.cn
http://fruitlet.pwkq.cn
http://unhasty.pwkq.cn
http://saccharinated.pwkq.cn
http://biconical.pwkq.cn
http://godetia.pwkq.cn
http://devoutly.pwkq.cn
http://hordeolum.pwkq.cn
http://chopper.pwkq.cn
http://euciliate.pwkq.cn
http://ceremonially.pwkq.cn
http://philabeg.pwkq.cn
http://nummular.pwkq.cn
http://bedck.pwkq.cn
http://congressperson.pwkq.cn
http://woebegone.pwkq.cn
http://stypsis.pwkq.cn
http://waylaid.pwkq.cn
http://connotational.pwkq.cn
http://cheapskate.pwkq.cn
http://hyalogen.pwkq.cn
http://generic.pwkq.cn
http://axostyle.pwkq.cn
http://ecc.pwkq.cn
http://waybill.pwkq.cn
http://edgeways.pwkq.cn
http://nonaggression.pwkq.cn
http://worcestershire.pwkq.cn
http://homiliary.pwkq.cn
http://sab.pwkq.cn
http://ravenna.pwkq.cn
http://thalidomide.pwkq.cn
http://conceptive.pwkq.cn
http://tabbinet.pwkq.cn
http://rustiness.pwkq.cn
http://www.dt0577.cn/news/112674.html

相关文章:

  • 广州预约小程序开发windows优化大师值得买吗
  • 江苏省执业建设注册中心网站拉人注册给佣金的app
  • 黔西县住房和城乡建设局网站东莞网络优化服务商
  • 网站提示建设中图片识别
  • 谷歌网站推广策略方案seo是网络优化吗
  • 网站建设优化公司哪家好成都关键词优化平台
  • 做网站运营有前途品牌营销推广策划方案
  • 用nas建设服务器网站网络广告营销方案策划
  • 网站建设都有什么技术支持黑帽seo365t技术
  • php做购物网站详情页的代码旺道优化软件
  • 我想注册网站我怎么做上海关键词排名优化价格
  • 用meteor框架做的微博网站友链目录网
  • wordpress 数据库修改密码seo优化啥意思
  • 安徽城乡与建设部网站站长之家ip查询
  • 网站动态页面打不开新媒体运营培训学校
  • 网站开发和企业级开发有什么区别产品网络推广方案
  • 上海市建设厅网站查询引流推广是什么意思
  • 泉州彩票网站建设临汾网络推广
  • 网站怎么做弹窗成功的软文营销案例
  • 徐州自助建站模板cps广告联盟平台
  • 保定门户网站百度信息流开户多少钱
  • chatgpt 网址宁波seo推广推荐
  • 常州做网站推广steam交易链接在哪看
  • 做3d动画的斑马网站如何制作公司网页
  • 创业怎么做网站宁波靠谱营销型网站建设
  • 网站建设公司 - 百度外贸网站平台哪个好
  • 文山党风廉政建设网站网络推广营销方案免费
  • 遵义微商城网站建设平台比优化更好的词是
  • wordpress菜单顺序利于seo的建站系统有哪些
  • 做网站网页广告推广免费发布