вызов службы vs dao из другой службы


У меня есть сущности пользователя и роли и сервис, слои DAO для них. Мне нужен список ролей от UserService.

Какой слой я должен использовать из UserService? метод списка вызовов RoleService vs RoleDAO ? Какой из них широко используется и почему?

2 8

2 ответа:

Обычно уровень DAO находится рядом с базой данных, уровень сервиса инкапсулирует вашу бизнес-логику, выполняя любые транзакции или другие вещи, а не просто вызывая DAO.

Служба, вызывающая другую службу, более распространена, потому что

  1. Ваш RoleService может иметь некоторый бизнес-код оцененный, вы можете извлечь выгоду из транзакций или передачи сообщений через JMS или вы можете иметь некоторую безопасность на методах обслуживания в будущем. Так что разделение проблем-это хорошая практика.

  2. Легко издеваться над сервисами и тестировать (это можно утверждать, даже DAO можно протестировать), но разделение бизнес-логики является хорошим способом с помощью интерфейсов уровня сервиса.

Но если у вас нет никакой бизнес-логики на уровне сервиса, вы можете избежать избыточного кода, просто используя DAO (но в будущем у вас будет долг кода для рефакторинга, если вы думаете о бизнесе на уровне сервиса )

Вызовите метод list в RoleService.

Бизнес-логика вокруг ролей может измениться в один прекрасный день, и все изменения в RoleService для обработки, которые будут бесполезны для всего кода, вызывающего DAO напрямую.