Spring поддержка JDBC и большой набор данных

SevenZipSharp является другим решением. Создает архивы с 7 zip...

19
задан Community 23 May 2017 в 11:47
поделиться

2 ответа

Драйвер Oracle JDBC имеет надлежащую поддержку метода setFetchSize () в java.sql.Statement ], что позволяет вам контролировать количество строк, которые драйвер будет извлекать за один раз.

Однако RowMapper , используемый Spring, работает, считывая каждую строку в память, получая RowMapper ], чтобы преобразовать его в объект и сохранить объект каждой строки в одном большом списке. Если ваш набор результатов огромен, то этот список станет большим, независимо от того, как JDBC извлекает данные строки.

Если вам нужно обрабатывать большие наборы результатов, RowMapper не масштабируется. Вместо этого вы можете рассмотреть возможность использования RowCallbackHandler вместе с соответствующими методами в JdbcTemplate. RowCallbackHandler не выполняет

20
ответ дан 30 November 2019 в 04:25
поделиться

Это свойство драйвера / соединения, следует ли передавать данные обратно вам или отправлять их обратно одним блоком. Например, в SQL Server вы используете свойство SelectMethod в URL-адресе подключения:

jdbc: microsoft: sqlserver: // gsasql03: 1433; DatabaseName = my_db; SelectMethod = direct

Значение of direct означает, что результаты должны быть получены за один раз. Другой вариант - курсор , который позволяет указать, что вы хотите, чтобы соединение передавало результаты обратно вам. Я не уверен, какой аналог для источника данных Oracle , боюсь

, RowCallbackHandler определенно работает для меня.

4
ответ дан 30 November 2019 в 04:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: