# Springboot中Transcation事务

作者:Odboy (opens new window)

本站地址:https://blog.odboy.cn (opens new window)

# 根据最佳实践,建议的操作顺序如下:

  1. 先调用阿里云服务创建RAM子账号

    • 确保子账号在阿里云上成功创建,并获取到相关的子账号信息(如子账号ID、名称等)。
    • 这一步确保了子账号的实际存在性和有效性。
  2. 再将RAM子账号的信息入库

    • 将从阿里云获取到的子账号信息存储到数据库中。
    • 入库时可以添加额外的字段,如创建时间、状态等,以便后续管理和审计。

# 原因分析

  • 数据一致性:先创建子账号并获取相关信息,可以确保入库的数据是真实有效的,避免因子账号创建失败导致数据库中存在无效记录。
  • 错误处理:如果在创建子账号时出现错误,可以直接捕获并处理,而不会影响数据库的完整性。
  • 事务管理:如果需要在数据库操作中使用事务管理,可以在确认子账号创建成功后再开始数据库事务,确保整个过程的原子性。

# 控制层中事务是否回滚问题

以下代码中,aliyunRamUserService.remove(args);被@Transcation(rollback=Exception.class)注解包裹,就算外层异常被捕获,事务也会回滚

@PostMapping("remove")
public ResponseResultModel<Object> remove(@RequestBody AliyunRamUser.RemoveArgs args) {
    try {
        aliyunRamUserService.remove(args);
        return responseSuccess("删除RAM子账户成功");
    } catch (ServerException e) {
        log.error("删除RAM子账户失败", e);
        return responseFailure(ResponseCodeEnum.SERVER_OPERATE_ERROR, e.getMessage());
    } catch (Exception e) {
        log.error("删除RAM子账户失败", e);
        return responseFailure(ResponseCodeEnum.SERVER_ERROR, "删除RAM子账户失败");
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
最近更新: 2025-08-18
Springboot中Transcation事务

2017 - 武林秘籍   |