класс c сервиса в контроллер?
Контроллер ничего не должен знать о том, какая модель хранится в базе (а энтити суть репрезентация данных в базе)
Тогда получается держать 2 сервиса? Методы одного возвращают объекты бд а второй (presentation) отвечает контроллеру моделями?
Эээ, зачем два сервиса? Репозиторий (или какой-то ещё слой работы с базами) возвращает из базы энтити, сервис обрабатывает их если надо, и возвращает дто.
Лучше дто, потому что если будет ленивый гибернейт, то придется ловить исключения
Не, совсем нет Во-первых вы экспозите все поля сущности, что зачастую не нужно (перегрузка транспорта информацией) либо вредно (протечка сенситивных данных, протечка зависимых сущностей, если таковые есть) Во-вторых вы создаёте coupling между схемой базы и контрактом сервиса, что чревато при потенциальных изменениях как первого, так и второго В-третьих(это если вам первые два пункта норм), как сказали выше если используете хибернейт, то для фетчинга всяких лейзи коллекций (а фетчить будет надо при сериализации) нужен будет транзакционный контекст, будут ошибки
Репозиторий вам возвращает объекты-сущности в сервис, сервис процессит и мапает их в дто, а контроллер оперирует только дто
Иногда выделяют доменные сервисы, но это редкость
Обсуждают сегодня