java - Spring Batch 可以多次使用 Driving Query 的结果吗?

标签 java spring-batch

我有一个需要实现的批处理过程。我的客户首选的批处理框架是 Spring Batch。

逻辑过程是

  1. 从数据库中选择已知状态的大量记录
  2. 将记录写入文件
  3. 更新已写入文件的记录的状态

该过程可能会涉及相当大量的记录,并且我希望更新事务尽可能短,因此我的预期设计是

  1. 使用驱动查询模式生成候选行列表
  2. 迭代第 1 步的结果并将其写入输出文件
  3. 开始交易
  4. 再次迭代第 1 步的结果,更新数据库中行的状态
  5. 结束交易

我打算使用现有的数据访问层来完成数据库工作,而不是使用 spring JdbcCursorItemReader。

这是 Spring Batch 可以轻松应对的事情,还是我需要再考虑一下?

提前致谢

戴夫

最佳答案

实际上这在Common Batch Patterns中有描述。文档;您可以阅读11.4 驱动基于查询的 ItemReaders

部分

通过使用 CompositeItemWriter拥有文件输出编写器和数据库更新逻辑以及从第一步获取输入的处理器,您可以模拟所需的行为。

希望这有帮助

关于java - Spring Batch 可以多次使用 Driving Query 的结果吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11847796/

相关文章:

java - 使用 DataSouceBuilder 时出现 DataSource Not Supported

java - 释放在多个步骤中使用的映射内存空间

java - jackson 忽略没有自定义序列化程序的空对象 "{}"

java - SVG/vector 图形对象 boolean 运算(并集、交集、减法)

java - Hibernate/Spring Data - 获取执行的 sql 查询计数

java - 确定同步范围?

java - Spring 批处理 MapJobRepositoryFactoryBean

java - Spring Batch : Could not increment identity; nested exception is com. microsoft.sqlserver.jdbc.SQLServerException : Invalid object name 'BATCH_JOB_SEQ' ?

java - 使用 AsyncTaskExecutor 时项目阅读器中的数据库连接泄漏

java - 测试 void 方法的行为