多线程情况下,不同service执行数据保存操作,如何保证首先是插入,后续的就是更新操作。-问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文

多线程情况下,不同service执行数据保存操作,如何保证首先是插入,后续的就是更新操作。

芍芍君 2017-03-10 14:20:29 2356

比如说POJO对象中barcode字段是唯一的。
ThreadA和ThreadB可能在同一时间内同时保存barcode=111的对象!如图810783465561600884

说明下,methodA 和 methodB 都加上了spring的事务注解,我要表达的情况就是,这两个方法内都会先查数据库中有没有barcode=111的数据。 首先数据库肯定是没有的,所以两个方法都会进行save操作。所以就会插入两条相同barcode的数据。

Java 数据库 Spring
分享到
取消 提交回答
全部回答(3)
  • millerwanglei
    2019-07-17 20:53:59

    通过队列

    0 0
  • 戚星
    2019-07-17 20:53:59

    建个唯一索引,然后使用 insert into on duplicate update 语句。

    0 0
  • akunmath
    2019-07-17 20:53:59

    给barcode建一个唯一索引。插入sql使用replace

    0 0
添加回答
开发与运维
使用钉钉扫一扫加入圈子
+ 订阅

集结各类场景实战经验,助你开发运维畅行无忧

推荐文章
相似问题
推荐课程