通过spring-data-jdbc结果集流式传输非常大的表。TYPE_FORWARD_ONLYREAD_ONLY

时间:2019-04-05 12:57:12

标签: java jdbc spring-data persistence spring-data-jdbc

嗨,我想流式传输一个很大的表spring-data-jdbc。以此目的 我已将连接设置为READ_ONLY,并在我的存储库中声明了一种如下所示的方法:

PackageRepository extends Repository<Package,String> {

Stream<Package> findAll();

}

我在这里的期望是结果集的类型将为FORWARD_ONLY,并且该方法不会无限期地阻塞,直到从数据库中接收到所有结果为止。

在这里,我将与Spring Data JPA进行比较,在这种情况下,Stream方法没有阻塞,并且根据获取的大小分部分地获取数据库的内容。

我错过了一些配置吗?如何使用spring-data-jdbc实现此行为?

更新:我将把问题换成其他形式。如何使用spring-data-jdbs实现以下功能:

template.query(new PreparedStatementCreator() {

            @Override
            public PreparedStatement createPreparedStatement(Connection con) throws SQLException {
                PreparedStatement statement =  con.prepareStatement("select * from MYTABLE with UR",ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY);
                statement.setFetchSize(150000);
                return statement;
            }
        }, new RowCallbackHandler() {

            @Override
            public void processRow(ResultSet rs) throws SQLException {

                // do my processing here
            }
        });

0 个答案:

没有答案