使用JPA将大型表格与大型文本文件合并?
问题描述:
我们有一个大约100万行的大表,以及一个包含数百万行的数据文件。我们需要定期将文本文件中的一部分数据合并到数据库表中。使用JPA将大型表格与大型文本文件合并?
它慢的主要原因是文件中的数据引用了其他JPA对象,这意味着需要为文件中的每一行读回其他jpa对象。即假设我们有100,000人,至1,000,000的资产对象
Person对象 - >资产列表
我们的应用程序目前使用纯JPA其所有的数据处理需求。有没有一种有效的方式来使用JPA/ORM方法来做到这一点,或者我需要恢复到纯SQL和供应商特定的命令?
答
一个可能的答案是痛苦的缓慢是做到以下几点
-
对于文件中的每一行:
- 读取数据线
- 取参考对象
- 检查数据附加到参考对象
- 如果不将数据添加到参考对象并持续存在
这么慢不值得考虑。
答
为什么不使用古老的技术:分而治之?将文件拆分成小块,然后让并行进程同时处理这些小文件。
并使用JPA和Hibernate提供的批量插入/更新。更多详细信息here
在我看来,理想的方式是使用纯JDBC提供的批处理支持,然后定期提交。
您可能也想看看spring batch,因为它提供了拆分/并行/遍历文件等功能。我已经成功地将所有这些应用程序用于相当大的应用程序。
你可以提供一些关于你的合并过程/需求的细节吗?您是否担心与性能相关的JPA或只是“我该如何做到这一点”? – 2010-12-02 23:29:31