我正在尝试通过Jdbi jdbc连接到vertica以获得巨大的结果集。 遵循JDBI文档并将其添加到dao,
@SqlQuery("<query>")
@Mapper(ResultRow.StreamMapper.class)
@FetchSize(chunkSizeInRows)
public Iterable<List<Object>> getStreamingResultSet(@Define("query") String query);
但似乎它将整个数据加载到内存而不是流式传输
答案 0 :(得分:1)
我一直在查看来自JDBI的流式结果集,并遇到了这个问题。答案在SQL Object Queries documentation页面上:
因为该方法返回
java.util.Iterator
它会加载结果 懒惰地
所以在这种情况下,Iterable<List<Object>>
应该是Iterator<List<Object>>
(我假设JDBI可以将数据库行转换为List<Object>
)。