Должен ли уровень репозитория возвращать объекты передачи данных (DTO)?

У меня есть уровень репозитория, который отвечает за мой доступ к данным, который вызывается уровнем сервиса. Уровень сервиса возвращает DTO, которые сериализуются и отправляются по сети. Чаще всего службы делают немного больше, чем просто обращаются к репозиторию и возвращают то, что возвращает репозиторий.

Но для того, чтобы это работало, репозиторий должен возвращать экземпляр этого DTO. В противном случае вам сначала нужно будет сопоставить объект уровня данных, который репозиторий возвращает, с DTO на уровне сервиса и вернуть его. Это кажется расточительным.

Вдобавок к этому, если создание DTO происходит на уровне сервиса, то что-то, что могло быть сделано раньше в одном вызове репозитория и, следовательно, в одном запросе к базе данных, теперь должно произойти с несколькими вызовами репозитория на уровне сервиса, чтобы ' составить окончательный DTO. Если, конечно, я не создаю транспортный объект между уровнем данных и сервисом, который может содержать такой составной объект. Который , затем должен быть сопоставлен с DTO. Это просто кажется расточительным ради чистоты. Но также кажется неправильным, чтобы уровень репозитория возвращал объекты, которые просто существуют, для отправки по сети.

25
задан JulianR 21 February 2011 в 17:12
поделиться