Обычно вы помещаете DAO в сервисный уровень, потому что по мере усложнения приложения вы будете выполнять полезные и нетривиальные действия в сервисе.Например, вы можете координировать сложные операции с данными с более чем 1 DAO.Слои сервисов также предоставляют границы API, которые разграничивают сквозные задачи, такие как управление транзакциями, проверки авторизации, ведение журнала производительности и т. Д.
Еще одна причина, по которой полезно абстрагировать вашу функциональность в сервисы, заключается в том, что она продвигает повторно используемые и обслуживаемые компоненты.Когда вы начнете, вам может быть интересно просто представить немного HTML.Вы пишете сервис, который загружает некоторые данные, и обрабатываете HTML-часть в слое над уровнем сервиса (уровень представления).Теперь вы хотите создать RESTful веб-сервис.Ваш уровень обслуживания может быть повторно использован для загрузки данных;все, о чем вам нужно беспокоиться, это json или xml, который возвращает конечная точка веб-службы (и, конечно, семантика REST).
Таким образом, для простых случаев слой Service может добавить немного, но по мере расширения вашего приложения они становятся стоящимии даже важно для поддержания чистоты кода.