SevenZipSharp является другим решением. Создает архивы с 7 zip...
Драйвер Oracle JDBC имеет надлежащую поддержку метода setFetchSize ()
в java.sql.Statement
], что позволяет вам контролировать количество строк, которые драйвер будет извлекать за один раз.
Однако RowMapper
, используемый Spring, работает, считывая каждую строку в память, получая RowMapper
], чтобы преобразовать его в объект и сохранить объект каждой строки в одном большом списке. Если ваш набор результатов огромен, то этот список станет большим, независимо от того, как JDBC извлекает данные строки.
Если вам нужно обрабатывать большие наборы результатов, RowMapper не масштабируется. Вместо этого вы можете рассмотреть возможность использования RowCallbackHandler
вместе с соответствующими методами в JdbcTemplate. RowCallbackHandler
не выполняет
Это свойство драйвера / соединения, следует ли передавать данные обратно вам или отправлять их обратно одним блоком. Например, в SQL Server вы используете свойство SelectMethod
в URL-адресе подключения:
jdbc: microsoft: sqlserver: // gsasql03: 1433; DatabaseName = my_db; SelectMethod = direct
Значение of direct
означает, что результаты должны быть получены за один раз. Другой вариант - курсор
, который позволяет указать, что вы хотите, чтобы соединение передавало результаты обратно вам. Я не уверен, какой аналог для источника данных Oracle , боюсь
, RowCallbackHandler
определенно работает для меня.