非常开放的问题,
我需要编写一个 Java 客户端,从 Oracle 数据库读取数百万条记录(比方说帐户信息)。将其转储为 XML 并通过 Web 服务将其发送给供应商。
执行此操作的最优化方法是什么?从获取数百万条记录开始。我采用 JPA/hibernate 路线,在获取 200 万条记录时出现内存不足错误。
JDBC 是更好的方法吗?获取每一行并构建 XML?还有其他选择吗?
我不是 Java 专家,因此非常感谢您的指导。
我们曾经遇到过类似的问题,我们的记录大小超过 2M。我们就是这样接近的。
使用任何 OR 映射工具都被简单地排除,因为创建大型 POJO 等开销很大,如果要将数据转储到 XML,则基本上不需要创建大型 POJO。
简单的 JDBC 是正确的选择。这样做的主要优点是它返回一个ResultSet
实际上并不一次包含所有结果的对象。这样就解决了将整个数据加载到内存中的问题。当我们迭代时加载数据ResultSet
接下来是 XML 文件的创建。我们创建一个 XML 文件并打开追加模式 http://www.mkyong.com/java/how-to-append-content-to-file-in-java/.
现在在我们迭代的循环中Resultset
对象,我们创建 XML 片段,然后将其附加到 XML 文件。这一直持续到整个Resultset
被迭代。
最终我们得到的是包含所有记录的 XML 文件。
现在,为了共享此文件,我们创建了一个 Web 服务,如果该文件可用,它将返回此 XML 文件(已存档/压缩)的 URL。
此后客户端可以随时下载该文件。
请注意,这不是同步系统,这意味着在客户端进行调用后该文件不会变得可用。由于创建 XML 调用需要花费大量时间,HTTP 通常会超时,因此采用这种方法。
只是您可以从中获取线索的一种方法。希望这可以帮助。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)