許哲瑋 智慧法师
我很含蓄, 什么也没有留下!

DAP后端事务控制(with spring事务机制)

DAP技术平台2025-5-7 11:43 阅读 45 评论 0

背景说明
在java程式撰写中,我们常常会听到别人说到, 要控制事务,那到底事务是什么? 在DAP中又该如何运用呢?

事务(Transaction)是什么?
比较正式的说法,事务是并发控制的单位,是使用者定义的一个操作序列。有四个特性(ACID):
原子性(Atomicity): 事务是资料库的逻辑工作单位,事务中包含的诸操作要么全做,要么全不做。
一致性(Consistency): 交易执行的结果必须是使资料库从一个一致性状态变成另一个一致性状态。一致性与原子性是密切相关的。
隔离性(Isolation): 一个交易的执行不能被其他事务干扰。
持续性/永久性(Durability): 一个事务一旦提交,它对资料库中资料的改变就应该是永久性的。

事务的种类
REQUIRED :如果目前存在事务,则加入该事务;如果目前没有事务,则建立新的事务。
SUPPORTS :如果目前存在事务,则加入该事务;如果目前没有事务,则以非事务的方式继续运作。
MANDATORY :如果目前有事务,则加入该事务;如果目前没有事务,则抛出异常。
REQUIRES_NEW :建立一个新的事务,如果目前存在事务,则把目前事务挂起。
NOT_SUPPORTED :以非事务方式运行,如果目前存在事务,则把目前事务挂起。
NEVER :以非事务方式运行,如果目前存在事务,则抛出异常。
NESTED :如果目前存在事务,则建立一个事务作为目前事务的巢状事务来运作;如果目前没有事务,则该取值等价于 REQUIRED
PR最常用的是REQUIRED跟REQUIRES_NEW

DAP事务应用种类,主要有两种
本地事务
spring原生,写法如下图,在method中声明
@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)


分布式事务
DAP封装,写法如下图,在method中声明


两者差异
本地事务与JAVA J2EE用法一样,主要控制同一环境
分布式事务主要用途是在跨服务,跨环境呼叫时,用以传递事务模式给别的服务达到一致性逻辑处理

路过

雷人

握手

鲜花

评论

您需要登录后才可以发表言论 登录立即注册
facelist
  • 177帖子
  • 0关注
  • 0粉丝
  • 关注公众号
Copyright © 2025 鼎捷数智股份有限公司 版权所有 All Rights Reserved. Powered by Discuz! X5.0
关灯
即将开放
返回顶部
返回顶部