1
如何在Hibernate或JDBC中处理并发插入。如何处理并发插入JPA
比方说在插入前需要检查下面的情况。
select count(1) from XYZ;
if(cnt>2)
throw exception;
else
insert into table
现在多个线程尝试在同一时间插入记录,下面的代码很有可能会失败。
如何处理这样的情况下,此
如何在Hibernate或JDBC中处理并发插入。如何处理并发插入JPA
比方说在插入前需要检查下面的情况。
select count(1) from XYZ;
if(cnt>2)
throw exception;
else
insert into table
现在多个线程尝试在同一时间插入记录,下面的代码很有可能会失败。
如何处理这样的情况下,此
您将需要对表XYZ
表级锁,以获得正确的计数,而不允许其他事务修改计数。
所以在JDBC:
不确定在JPA中是否有可能实现表级锁定。
您可以使用JPA中的'@ Version'或更改数据库事务隔离或使用'SELECT ... FOR UDATE'。请参阅https://en.wikibooks.org/wiki/Java_Persistence/Locking。 – jocki 2014-11-05 05:25:32