在Spring批处理中从DB获取数据并存储在内存中

时间:2015-11-10 15:47:23

标签: spring-batch

在spring批处理程序中,我正在读取文件中的记录并与数据库进行比较,如果数据表明column1中的column1已经存在于table1中。

表1相当小且静态。有没有办法可以从table1获取所有数据并将其存储在弹簧批处理代码的内存中?现在,对于文件中的每个记录,选择查询都会访问数据库。

该文件有3列用" |"分隔。

我正在阅读的文件平均有1200万条记录,大约需要5个小时才能完成这项工作。

3 个答案:

答案 0 :(得分:1)

我像使用标准网络应用一样使用缓存。使用Spring的缓存抽象添加服务缓存,这应该照顾它恕我直言。

答案 1 :(得分:1)

使用StepExecutionListener.beforeStep(或@BeforeStep)在内存中预加载 使用此技巧数据将在步骤执行前加载一次 这也适用于步骤重启。

答案 2 :(得分:0)

在JobExecutionListener.beforeJob( - )中加载静态表并将其保存在jobContext中,您可以使用“作业和步骤属性的后期绑定”通过多个步骤访问'。 您可以参考此链接的5.4部分http://docs.spring.io/spring-batch/reference/html/configureStep.html