使用JPA将大表与大文本文件合并?

时间:2010-12-02 22:28:14

标签: java orm jpa ejb

我们有一个大约100万行的大表,以及一个包含数百万行的数据文件。我们需要定期将文本文件中的数据子集合并到数据库表中。

它变慢的主要原因是文件中的数据引用了其他JPA对象,这意味着需要为文件中的每一行读回其他jpa对象。即想象一下,我们有100,000人,还有1,000,000个资产对象

人物对象 - >资产清单

我们的应用程序目前使用纯JPA来满足其所有数据操作要求。有没有一种有效的方法使用JPA / ORM方法来实现这一点,还是我需要恢复到纯SQL和特定于供应商的命令?

2 个答案:

答案 0 :(得分:1)

为什么不使用古老的技术:分而治之?将文件拆分为小块,然后让并行进程同时处理这些小文件。

并使用JPA和Hibernate提供的批量插入/更新。更多详情here

我认为理想的方法是使用普通JDBC提供的批量支持,然后定期提交。

您可能还想查看spring batch,因为它提供了拆分/并行化/迭代文件等开箱即用。我已成功地将所有这些成功用于相当大的应用。

答案 1 :(得分:0)

一个可能缓慢的答案是做以下

  • 对于文件中的每一行:

    • 读取数据行
    • 获取参考对象
    • 检查数据是否附加到参考对象
    • 如果没有将数据添加到引用对象并保持

这么慢是不值得考虑的。