写点什么

java 进行数据库操作的并发控制的 2 种方法

  • 2023-12-28
    广东
  • 本文字数:443 字

    阅读完需:约 1 分钟

java进行数据库操作的并发控制的2种方法

本文分享自华为云社区《java进行数据库操作的并发控制》,作者:张俭。


在现代应用编码中,从数据库里面 find 出来,进行一些业务逻辑操作,最后再 save 回去。即:


Person person = personRepo.findById(id);person.setAge(18);personRepo.save(person);
复制代码


但是这样的业务操作,如果一个线程修改年龄,另一个线程修改昵称,最后 save 回去,可能会导致年龄/昵称某一个的修改被覆盖。



常见的解决方案有两种

执行前添加悲观锁


通过分布式锁等方式,保证同一时间只有一个线程能够对数据进行修改。

乐观锁思路实现


版本控制是另一种流行的处理并发问题的方法。它通过在每次更新记录时递增版本号来确保数据的一致性。

这在 JPA 中,可以通过在 field 上添加@Version注解来实现,但这也就要求①数据库中必须有 version 字段,②对于查找后更新类操作,必须使用 JPA 的 save 方法来进行更新。


当然也可以通过update_time来模拟乐观锁实现,这可能需要你在更新的时候添加update_time的条件,并且,update_time在极端场景下,理论正确性没那么严谨。


点击关注,第一时间了解华为云新鲜技术~

发布于: 刚刚阅读数: 4
用户头像

提供全面深入的云计算技术干货 2020-07-14 加入

生于云,长于云,让开发者成为决定性力量

评论

发布
暂无评论
java进行数据库操作的并发控制的2种方法_Java_华为云开发者联盟_InfoQ写作社区