今日阅读:接口的幂等性.注解transactional的失效场景以及解决办法

本文探讨了接口幂等性的概念及其实现方式,包括全局唯一ID、去重表、版本号控制和预查询等策略。同时,分析了@transactional注解的失效场景及其解决方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.接口的幂等性

  接口幂等性就是接口的可重复调用,主要是对数据库的增删改.

实现幂等性的方式:

      (1) 全局唯一id,需要根据实际业务生成,操作执行成功后生成这个id,每次执行操作前先判断这个id存不存在,存在就是已执行,不存在则添加这个id.

      (2)去重表:就是利用数据库的唯一约束.如果重复新增某个唯一标识,就会报唯一约束异常,再利用事务回滚.

      (3)利用版本号控制.多拥有更新操作.每次更新的时候需要在where条件中添加version判断,并更新version.如果版本已更新就无法再次根据原版本号更新了.

      (4)在并发不高的系统,可以在新增或更新操作执行前先对关键数据进行查询,并根据实际业务设置判断,通过后再执行操作

2.注解transactional的失效场景以及解决办法

  失效场景:(1)注解所在方法为public状态以外的

                 (2)异常为check异常,也就是非运行时异常,比如timeout,io读写.

                 (3)异常被catch并且没有抛出

  解决:@Transactional(rollbackFor=Exception.class) 设置异常回滚类型.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值