我正在使用JdbcRowSet
来检索可能非常大的数据集(返回1M +行)。
因为结果集可能很大,所以我不希望将它保存在内存中。我希望将JdbcRowSet
用作已连接的 RowSet
并根据需要从数据库中获取行,而不是将JdbcRowSet
用作断开连接的{{1}这将保存内存中的所有行。
不幸的是,当使用以下代码初始化我的RowSet
时,整个JdbcRowSet
会被拉入堆中,从而导致RowSet
s并关闭应用程序。
如何防止JDBC驱动程序或OutOfMemoryError
强制将整个结果集加载到内存中,而只是一次只将100行读取到内存中(按照下面的示例)?
我正在使用Spring来连接应用程序,并在整个数据层使用Spring JDBC模板。数据库是Oracle 11g。
JdbcRowSet
(请不要鼓励我更改我的查询以便返回更少的行;我向您保证这是业务要求,是非可选的等等)