如何使用多个JVM处理并发插入?

时间:2018-08-22 10:33:04

标签: java spring-data-jpa spring-transactions concurrentmodification distributed-transactions

我们有一个带有控制器类的Spring Boot应用程序,该类从客户端调用并与DB交互。根据条件,控制器检查唯一值的记录是否存在,如果不存在,它将创建新记录(具有自动生成的主键)并保存。

现在并发问题处于这种情况:

class A的两个不同的对象想要一个值为class B的{​​{1}}的对象,它们都在数据库中同时检查,它们得到b1,现在他们尝试创建值为null的{​​{1}}新对象,这时出错了。

我尝试使用简单的双重锁定方法

class B

,但后来意识到我的应用程序在两个JVM上运行,这两个JVM使用一个公共数据库。经过一些问题后,我想到了另一个选择,

  

@Transacational(isolation = REPEATABLE_READ)

但是我不确定它是否可以在我的场景中使用,正如它的解释所说,在修改一行中的数据时它很有用,但是我正在创建一个新行。由于这种情况很少见,并且涉及多个JVM,因此我无法对其进行确定的测试。

0 个答案:

没有答案