【发布时间】:2011-08-10 03:05:53
【问题描述】:
我们有一个服务方法,它大致执行以下操作:
@Transactional
public void serviceMethod(...){
for(Item i : bunchOfItems){
webServices.webServiceCall(...);
dao.daoUpdateMethod(...);
}
}
问题在于,一旦发生更新,数据库就会在事务期间持有对表的锁定(网络服务调用平均每次 5 秒)。当然,Web 服务调用或 DAO 调用中的任何异常都会导致完全回滚。
解决这种情况的最佳方法是什么?
【问题讨论】:
-
为什么更新会锁定整个表?在任何体面的 DBMS 中,它只会锁定已更新的行。
-
这个问题和Spring无关,是一般的问题。
标签: java database spring transactions