底层JPA JDBC连接可以流吗?

时间:2017-03-24 15:32:47

标签: java jpa jdbc glassfish large-query

我们有一个使用JPA的Java EE应用程序。 用户可以要求应用程序根据大型查询的结果生成一些输出(大图表等),因此在这种情况下,我们决定直接使用JDBC并循环结果集。 我们已经实现了这样的代码:

@Resource(mappedName = "jdbc/resource")   
private DataSource dataSource;    

Connection connection = dataSource.getConnection();

[...]

Connection conn = dataSource.getConnection();
stmt = conn.createStatement(ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY);
stmt.setFetchSize(Integer.MIN_VALUE);

[...]

ResultSet rs = stmt.executeQuery(sql);
while (rs.hasNext()) {
    [....]
}

无论如何它总是将所有结果加载到内存中,我们尝试了不同的技术(useCursorFetch true和fetch size = 10等),没有运气,我们总是没有流结果集。

“jdbc / resource”与jpa实体管理器使用的资源相同(因此工作正常),连接没有“怪异”选项,我们使用glassfish 4.1进行测试,我们使用的是连接器/ J版本5.1.26和5.1.32。

有没有办法获得有效的流式结果集?

0 个答案:

没有答案