JdbcRowSet:尽管尝试一次读取有限的行数,但非常大的结果会溢出堆

时间:2016-07-08 12:32:40

标签: java oracle jdbc

我正在使用JdbcRowSet来检索可能非常大的数据集(返回1M +行)。

因为结果集可能很大,所以我不希望将它保存在内存中。我希望将JdbcRowSet用作已连接的 RowSet并根据需要从数据库中获取行,而不是将JdbcRowSet用作断开连接的{{1}这将保存内存中的所有行。

不幸的是,当使用以下代码初始化我的RowSet时,整个JdbcRowSet会被拉入堆中,从而导致RowSet s并关闭应用程序。

如何防止JDBC驱动程序或OutOfMemoryError强制将整个结果集加载到内存中,而只是一次只将100行读取到内存中(按照下面的示例)?

我正在使用Spring来连接应用程序,并在整个数据层使用Spring JDBC模板。数据库是Oracle 11g。

JdbcRowSet

(请不要鼓励我更改我的查询以便返回更少的行;我向您保证这是业务要求,是非可选的等等)

0 个答案:

没有答案