Я бы порекомендовал вам использовать CachedRowSet.
Объект CachedRowSet - это контейнер для строк данных, который кэширует свои строки в памяти, что позволяет работать, не всегда подключаясь к своему источнику данных.
Объект CachedRowSet - это отключенный набор строк, что означает, что он использует соединение со своим источником данных только на короткое время. Он подключается к своему источнику данных во время чтения данных, чтобы заполнить себя строками, и снова во время передачи изменений обратно в свой базовый источник данных.
Поскольку объект CachedRowSet хранит данные в памяти, объем данных, которые он может содержать в любой момент времени, определяется объемом доступной памяти. Чтобы обойти это ограничение, объект CachedRowSet может извлекать данные из объекта ResultSet порциями данных, называемыми страницами. Чтобы воспользоваться этим механизмом, приложение устанавливает количество строк, которые будут включены в страницу, используя метод setPageSize. Другими словами, если размер страницы установлен на пять, из источника данных будет извлекаться порция из пяти строк данных за один раз. Приложение также может по желанию установить максимальное количество строк, которые могут быть выбраны за один раз. Если максимальное количество строк установлено равным нулю, или максимальное количество строк не установлено, то нет ограничений на количество строк, которые могут быть выбраны за раз.
После того, как свойства были установлены, объект CachedRowSet должен быть заполнен данными, используя либо метод заполнения, либо метод execute. Следующие строки кода демонстрируют использование метода populate. Обратите внимание, что эта версия метода принимает два параметра: дескриптор ResultSet и строку в объекте ResultSet, из которой начинается извлечение строк.
CachedRowSet crs = new CachedRowSetImpl();
crs.setMaxRows(20);
crs.setPageSize(4);
crs.populate(rsHandle, 10);
Когда этот код запускается, crs будет заполняться четырьмя строками из rsHandle, начиная с десятой строки.
На аналогичном пути вы могли бы использовать стратегию разбивки своих данных на JSP и т. Д. И т. Д.