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