Spring批处理:有效地关联标题和正文记录

时间:2013-08-07 22:04:35

标签: spring batch-processing spring-batch

我正在尝试使用Spring Batch编写概念证明,其中包括读取固定宽度文件并将记录插入数据库。我没有经验可以依靠,我发现文档对我想要实现的目标有点了解。

我可以阅读标题行和正文行没问题(使用FixedLengthTokenizerPatternMatchingCompositeLineMapper)。但是,在构建域对象时,我需要做两件不太明显的事情:

  • 存储标题ID,文件名等的对象也需要文件中的记录总数(不是写入数据库的数字 - 这样可以方便手动检查)
  • 存储各个记录的对象需要引用文件的标题ID

换句话说,逐项阅读,处理和写作是不够的。每行对应的数据取决于文件中的其他行。

我确信必须有一个干净的基于Spring的方法,我只是不确定从哪里开始寻找。

示例:

HDR 12345
ROW 2013-08-01 Lorem ipsum
ROW 2013-08-01 dolor sit amet

我需要构建的三个域对象是:

Header {id: 12345, records: 2}
Record {header_id: 12345, text: Lorem ipsum }
Record {header_id: 12345, text: dolor sit amet }

在生产中,文件会更加复杂和非常大 - 例如,将它们写在中间状态是不理想的,尽管我想知道解决方案是否可能涉及在两次通过中处理它们,不知何故构建这样所需的数据?

提前致谢,

0 个答案:

没有答案