Эффективный способ передачи данных из DAO на уровень обслуживания - PullRequest
0 голосов
/ 30 апреля 2018

В нашем проекте мы используем слой DAO для доступа к данным из базы данных, который просто запрашивает базу данных, используя PreparedStatement и возвращает ResultSet на сервисный уровень. Я знаю, что возвращать ResultSet на уровень обслуживания - плохая идея, так как возникает много сложностей при эффективном закрытии ResultSet, PreparedStatement, Connection. Опять же, лучшей идеей было бы заполнить данные в DTO из уровня DAO и получить доступ к данным из DTO в сервисном уровне, но наш код написан так, что существует только один универсальный метод для запроса данных из базы данных, и он возвращает ResultSe т. Этот метод вызывается из нескольких мест сервисного уровня, и мы не можем изменить все места и написать там DTO.

Итак, мой вопрос: каков наилучший способ вернуть данные из DAO на уровень обслуживания в этом случае? Любое предложение было бы хорошо.

1 Ответ

0 голосов
/ 30 апреля 2018

Весь смысл DAO состоит в том, чтобы он абстрагировал доступ к данным от уровня обслуживания, то есть уровень обслуживания не должен знать (или заботиться), поступают ли данные из:

  • база
  • веб-сервис
  • простой текстовый файл
  • или где-то еще

Таким образом, задача DAO - преобразовать результаты SQL в (список) DTO.

Если у вас есть один универсальный класс для запросов к базе данных, и он просто возвращает ResultSet, то этот класс не является DAO. Это вспомогательный класс, который будет использоваться классами DAO.

Кажется, что вы на самом деле пропустили слой доступа к данным, поэтому, чтобы ответить на ваш вопрос:

Как лучше всего вернуть данные из DAO на уровень обслуживания?

Напишите фактические классы DAO, которые возвращают DTO.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...