首页 > 其他分享 >关于为什么事务要写在service层

关于为什么事务要写在service层

时间:2023-07-16 13:22:27浏览次数:35  
标签:为什么 事务 那么 service dao 回滚 异常

https://dandelioncloud.cn/article/details/1482887703812452354
这个写的挺好
我们需要回滚的是逻辑业务出现异常的状况

而若写在dao层,那么dao层只会出现数据库异常,类似于一个unsigned类型减到负数这样的操作

这样在出现业务逻辑异常时
(比如说有多个dao操作,更新余额,更新库存,首先余额够,那么dao更新余额,那么绝对不会发生异常,但是若库存不够
给它减到负数了,那么绝对会发生异常,即购买失败,但是若此时事务写在dao层,那么一个dao方法就是一个独立的事务
那么这样只会回滚更新库存的操作,而余额却不会回滚)
很可能不会发生回滚
若写在业务service层,那么发生这样的逻辑业务异常时,我们可以手动抛出异常来实现
所需要操作的所有dao层的方法的回滚
即一个service方法出现异常,事务就会回滚,所对应的调用的多个dao层的方法都会回滚

标签:为什么,事务,那么,service,dao,回滚,异常
From: https://www.cnblogs.com/lxl-233/p/17557738.html

相关文章

  • 编写一个函数,判断 string 对象中是否含有大写字母。编写另-个函数,把 string 对象全都
    第一个函数的任务是判断string对象中是否含有大写字母,无须修改参数的内容,因此将其设为常量引用类型。第二个函数需要修改参数的内容,所以应该将其设定为非常量引用类型。满足题意的程序如下所示:#include<iostream>#include<Windows.h>usingnamespacestd;boolhasUpper(......
  • 为什么unity里的异步加载要配合协程使用
      在Unity中,异步加载资源时需要配合协程使用的原因是为了避免阻塞主线程。在游戏开发中,资源加载通常是一个耗时的操作,如果在主线程中进行同步加载,会导致游戏卡顿或者无响应,影响用户体验。使用协程可以将资源加载操作放在后台线程中进行,然后在加载完成后再将结果返回到主线程......
  • 每日一题:SpringBoot中支持的事务类型
    以下是每种事务类型的作用、代码示例和对代码的解释:PROPAGATION_REQUIRED(默认):作用:如果当前存在事务,则方法将在该事务中运行;如果不存在事务,则创建一个新的事务。适用于大多数业务场景,确保方法在事务中执行,如果没有事务,则创建一个新的事务。代码示例:@Transactional(propagatio......
  • 十、事务消息
    事务消息介绍及流程图RocketMQ在4.3.0版中已经支持分布式事务消息,是通过二阶段提交加事务回查来保证本地事务和发送消息的一致性。事务消息交互流程如下图所示。生产者将消息发送至ApacheRocketMQ服务端。ApacheRocketMQ服务端将消息持久化成功之后,向生产者返回Ack确认......
  • vue3 为什么使用 hooks?
    目的为了解决在组件中共享逻辑和状态的问题。 hooks提供了一种更简洁和直观的方式来共享逻辑和状态。vue3中的hooks是基于函数的组件模型,通过在函数组件内部使用特定的hook函数来实现。每个hook函数都有特定的用途,例如:useState用于创建和管理状态,useEffect用于......
  • 关于 Spartacus ProdutList Component Service model$ 的填充逻辑
    源代码:这段代码是Angular中的RxJS代码,主要是创建一个名为model$的Observable对象,这个对象的生成逻辑复杂一些,主要涉及using,subscribe,pipe,shareReplay等函数的使用。逐行解释如下:readonlymodel$:Observable<ProductSearchPage>=using(这一行定义了一个......
  • 关于 SAP ABAP 事务码 SM30 里的 Restrict Data Range
    SAPABAP事务码SM30里的RestrictDataRange区域的Enterconditions和Variant这两个选项有什么作用?SAPABAP中的SM30事务码用于维护表的条目。在使用SM30事务时,RestrictDataRange区域允许用户定义一些限制条件,可以帮助缩小查询或更改的数据范围。这对于大型表......
  • kubernetes之 认证和serviceaccount
    第十部分认证和serviceaccount前面讲的都是admin超级用户在操作k8s,Kubectl不能所有人都可以使用和访问。用户访问逻辑图,认证:第一种令牌认证token,最简单的认证,(只需要对方认证的共享密钥即可)服务器需要认可客户端的证书。授权:RBAC,基于角色的访问控制,目前用的比较多。    ......
  • 99.为什么0.10.20.3如何解决这个问题
    99.为什么0.1+0.2!=0.3?如何解决这个问题?当计算机计算0.1+0.2的时候,实际上计算的是这两个数字在计算机里所存储的二进制,0.1和0.2在转换为二进制表示的时候会出现位数无限循环的情况。js中是以64位双精度格式来存储数字的,只有53位的有效数字,超过这个长度的位数会被......
  • SQL注入问题、视图、触发器、事务、存储过程、函数、流程控制、索引、测试索引
    SQL注入问题连接MySQL服务器conn=pymysql.connect(host=‘127.0.0.1’port=3306user=‘root’password='1234'......