java - Spring:使用事务性数据库方法处理长时间运行的 Web 服务调用的最佳方式?

标签 java database spring transactions

我们有一个服务方法,它大致执行以下操作:

@Transactional
public void serviceMethod(...){
   for(Item i : bunchOfItems){
      webServices.webServiceCall(...);
      dao.daoUpdateMethod(...);
   }
}

问题是,一旦发生更新,数据库就会在事务期间锁定表( Web 服务调用平均每次 5 秒)。当然,网络服务调用或 DAO 调用中的任何异常都应该导致完全回滚。

解决这种情况的最佳方法是什么?

最佳答案

如果 Web 服务调用不依赖于您在上一次迭代中可能更新的内容,您可以一次性进行所有 Web 服务调用并将结果收集到内存中,然后为所有的启动事务更新。这将使您的事务更短,并且由于我假设 Web 服务调用无论如何都不是事务性的,因此它不会影响您的数据的一致性。

关于java - Spring:使用事务性数据库方法处理长时间运行的 Web 服务调用的最佳方式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5741401/

相关文章:

database - 这是支持 x 种语言的多语言系统文本的良好设计吗?

java - 长时间发送请求时出现 org.springframework.transaction.CannotCreateTransactionException

java - Git 克隆失败

java - JXTable + GlazedLists + 在拖动选择期间更新 = 问题

php - 如何使用数据库中的日期(包括时间)作为 php 表中隐藏字段的值

java - 在本地抑制不必要的 stub 异常

android - 如何减少 android SQLite 中的自动增量 _id?

spring - Cognito 自定义消息并包含用户属性

java - Firebase实时数据库,从键值对获取数据

Java正则表达式匹配除固定终端之外的所有内容