2016-01-03 5 views
-1

Предположим, что у меня есть Пользователь. Я хочу проверить, существует ли идентификатор пользователя в базе данных. Я знаю, как проверить, но в каком слое? Какой для этого лучший и понятный слой?В каком слое я должен проверить, существует ли (что-то)?

На мой взгляд, это должен быть слой контроллера. Но я не думаю, что он будет гладким. Я никогда не видел дополнительных методов для проверки в классе User Controller на примерах проектов. Может быть, я что-то упустил, что ты думаешь?

ответ

1

Он должен быть на стороне модели. Контроллер должен просто контролировать поток потока от модели для просмотра.

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

+0

Вы имеете в виду, что в слое DAO должен быть boolean метод, который заставляет всю работу и уровень сервиса просто возвращать это? Или DAO получает данные, уровень обслуживания проверяет, существуют ли данные и возвращает true или false? – Xnart

+0

Это подробная информация о том, как вы хотите иметь дело с пустыми данными. Если вы ожидаете список сотрудников, и если вы получите пустой список, вы можете либо возвратить логическое значение true/false, либо выбросить исключение на основе способа вашей реализации. – SMA

0

По моему мнению, это зависит от того, что вы хотите сделать с результатом. Например, если вы просто хотите проверить, что пользователь существует, я бы поместил метод в DAO.

Однако если бы вы сказали, что у меня есть пользователь, теперь я собираюсь что-то сделать. Я бы предложил просто загрузить пользователя и проверить вместо него значение null. Это значит, что вы не собираетесь дважды в БД. Не проблема, если ваше кеширование настроено правильно. Я сделал предположение, что кеширование не включено.

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