Учитывая следующую ситуацию:Streaming DAO Результаты в Java (Design Pattern)
- DAO, который запрашивает все строки из таблицы и отображает их в список объектов предметной области (чистый
JDBC
) - сервис, который обрабатывает список, полученный из DAO, и отображает определенные элементы списка, отформатированные в файле.
Проблема в том, что все результаты DAO хранятся в памяти, что становится опасным по мере роста таблиц.
Вопрос: Есть ли образец для чтения объектов из DAO потоковым способом, который служба обрабатывает только один элемент за раз, записывает его в выходной поток файла и затем запрашивает следующий элемент из набора результатов ? Является ли вообще хорошей идеей использовать ResultSet
как возвращаемый тип DAO?
Thx! У меня было такое же ощущение, что не стоит показывать ResultSets. Итератор - хороший совет! Тем не менее, мне интересно, стоит ли просто отделить (немного) BL от логики запросов БД. Я предполагаю, что в целом люди просто смешивают это в одном классе? – david
Обычно логика BL и DB не переплетается. Возвращение пользовательского итератора из вашего DAO будет самым простым и чистым решением. – Joel
Абсолютно согласен! – david