У нас есть метод обслуживания, который выполняет примерно следующее:
@Transactional
public void serviceMethod(...){
for(Item i : bunchOfItems){
webServices.webServiceCall(...);
dao.daoUpdateMethod(...);
}
}
Проблема заключается в том, что как только происходит обновление БД удерживает блокировку на таблице на время транзакции (веб-служба вызывает среднее значение) 5 секунд каждый). Любое исключение в вызове веб-службы или вызове DAO, конечно, должно вызвать полный откат.
Как лучше всего подойти к этой ситуации?