如何处理并发插入JPA

时间:2014-11-05 04:20:07

标签: hibernate jpa

如何在Hibernate或JDBC中处理并发插入。

让我们说下面的场景需要在插入之前进行检查。

select count(1) from XYZ;
if(cnt>2)
throw exception;
else 
insert into table

现在多个线程尝试同时插入记录,下面的代码很可能会失败。

如何妥善处理此类案件

1 个答案:

答案 0 :(得分:0)

您需要在表XYZ上进行表级锁定才能获得正确的计数,并且不允许其他事务修改计数。

所以在JDBC中:

  1. 打开连接
  2. 获取表XYZ的锁定
  3. 查询表中的计数
  4. 如果count不正常则回滚连接。这将释放 锁定
  5. else insert
  6. 提交交易。这将释放锁
  7. 不确定JPA是否可以实现表级锁定。