我们有一个大约100万行的大表,以及一个包含数百万行的数据文件。我们需要定期将文本文件中的数据子集合并到数据库表中。
它变慢的主要原因是文件中的数据引用了其他JPA对象,这意味着需要为文件中的每一行读回其他jpa对象。即想象一下,我们有100,000人,还有1,000,000个资产对象
人物对象 - >资产清单
我们的应用程序目前使用纯JPA来满足其所有数据操作要求。有没有一种有效的方法使用JPA / ORM方法来实现这一点,还是我需要恢复到纯SQL和特定于供应商的命令?
答案 0 :(得分:1)
为什么不使用古老的技术:分而治之?将文件拆分为小块,然后让并行进程同时处理这些小文件。
并使用JPA和Hibernate提供的批量插入/更新。更多详情here
我认为理想的方法是使用普通JDBC提供的批量支持,然后定期提交。
您可能还想查看spring batch,因为它提供了拆分/并行化/迭代文件等开箱即用。我已成功地将所有这些成功用于相当大的应用。
答案 1 :(得分:0)
一个可能缓慢的答案是做以下
对于文件中的每一行:
这么慢是不值得考虑的。