springboot 一个方法同时调用不用Dao的方法

奈何兮 2019-01-12 11:22:38
springboot 其中一个业务是添加操作,需要往多张表里同时添加相同数据,这样控制层insert()方法就要同时调用不同Dao里的add()方法,所以有以下几点疑惑: 1.这里面是不是得需要事务 2.并且在此之前还得判断表中是否有存在数据,如果数据不存在则添加,还有一种可能是其他表里已经存在这条数据,那么这个操作该怎么处理 3.如果是高并发,可能会存在重复数据,这个该怎么处理
...全文
474 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
奈何兮 2019-01-13
  • 打赏
  • 举报
回复
引用 1 楼 亲爱的Joe的回复:
1.用不用事务需要根据你的业务决定,如果不需要所有表都添加数据,则不必使用事务.
2.重复数据问题可以让数据库自己检查,常见的mysql数据库有个ignore修饰词,如果有重复数据,可以自动忽略掉
好的,又学到了,谢谢您。
奈何兮 2019-01-13
  • 打赏
  • 举报
回复
同时往多张表插相同数据,并且插入的数据有个字段为 设备编号,这个设备编号是得需要唯一的,所以添加操作我就得需要事务回滚了,高并发请求这块的幂等和唯一约束学到了,真的非常感谢您。
码匠笔记 2019-01-12
  • 打赏
  • 举报
回复
这个问题你可以从这几个方向考虑
1,如果你两个业有务强依赖,那么事务是必须的。一个语句没有执行成功需要回滚,这只单应用,如果涉及dubbo等微服务同样的道理,但更多的涉及分段事务提供和回滚。这里你只需要理解事务。
2,之所以你插入的时候会存在一个业务有数据,一个业务没有数据。那么是因为你曾经出现过一个失败一个成功没有回滚,事务解决了这个问题就不会存在了。
3,高并发的重复是你约束的问题,接口的设计一定要考虑“幂等”。这样重试或者是多次请求就不会出现问题,同时对特别的字段做唯一索引约束,比如用户名称,你可以做一个唯一索引约束,出现这个异常自然会回滚。
希望对你有帮助

亲爱的Joe 2019-01-12
  • 打赏
  • 举报
回复
1.用不用事务需要根据你的业务决定,如果不需要所有表都添加数据,则不必使用事务.
2.重复数据问题可以让数据库自己检查,常见的mysql数据库有个ignore修饰词,如果有重复数据,可以自动忽略掉

81,094

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧