Потоковая передача очень большой таблицы через spring-data-jdbc Resultset.TYPE_FORWARD_ONLY READ_ONLY - PullRequest
0 голосов
/ 05 апреля 2019

Привет, я хотел бы передать очень большую таблицу spring-data-jdbc. Для этого Я установил соединение READ_ONLY. Я объявил в своем хранилище метод, который выглядит следующим образом:

PackageRepository extends Repository<Package,String> {

Stream<Package> findAll();

}

Здесь я ожидаю, что набор результатов будет иметь тип FORWARD_ONLY, и этот метод не будет блокироваться бесконечно, пока все результаты не будут получены из базы данных.

Здесь я бы сделал сравнение с JPA Spring Data, где методы 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
            }
        });
...