Spring Batch 如何使用分块将复合实体写入多个数据库表(使用批处理编写器)

发布于 2025-01-09 03:02:57 字数 1000 浏览 0 评论 0原文

我的要求是从平面文件中读取 Foo 条目并在处理后将它们存储在数据库中。然而,处理步骤可能需要将一组附加的“Bar”实体(针对每个 Foo)写入 Bar 表。可以使用 CompositeItemWriter 和 JdbcBatchItemWriters(用于 Foo 和 Bar)来实现这一点,而无需我编写一个批量写入 Foo 及其相应 Bar[] 的自定义编写器。我正在分块处理记录,并且没有从 Bar 到 Foo 的外键 ID 引用要求。

我已经评论了 SO 中的一堆帖子 与此相关,并想做这样的事情:

// create a composite type Foo-Bar as output of processor
Foo-Bar {
  Foo foo, // processed foo
  List<Bar> bars // zero or more bars
}

// define step using these
ItemReader<Foo>
ItemProcessor<Foo, Foo-Bar>
ItemWriter<Foo-Bar>

但无法找出 ItemWriter esp 的正确方法,因为每个 Foo 项目都有一个 Bar 项目列表。当批处理框架为每个 fooBars 块调用 write(ListfooBars) 时,如何设置 JdbcBatchItemWriter 为每个 Foo 写入 Bar[] 项。

谢谢。

My requirement is to read Foo entries from a flat file and store them in the database after processing. However, the processing step may optionally require an additional set of 'Bar' entities (for each Foo) to be written to the Bar table. Can this be achieved with CompositeItemWriter and JdbcBatchItemWriters (for Foo and Bar) without me writing a custom writer that writes Foo and its corresponding Bar[] in batch. I am processing the records in chunks and have no foreign key ID reference requirement from Bar to Foo.

I've reviewed a bunch of posts in SO related to this and want to do something like this:

// create a composite type Foo-Bar as output of processor
Foo-Bar {
  Foo foo, // processed foo
  List<Bar> bars // zero or more bars
}

// define step using these
ItemReader<Foo>
ItemProcessor<Foo, Foo-Bar>
ItemWriter<Foo-Bar>

but can't figure out the right approach for ItemWriter esp given each Foo item has a list of Bar items. How do you setup a JdbcBatchItemWriter to write Bar[] items for each Foo when write(List<Foo-Bar> fooBars) is called by batch framework for each chunk of fooBars.

Thank you.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文