Я довольно новичок в ColdFusion ORM, и у меня есть несколько вопросов, с которыми я надеялся получить помощь.
Я работаю над фреймворком, который использует довольно стандартную и строгую архитектуру MVC. Эта структура также имеет «сервисный уровень», который находится между контроллером и моделью. Сервисный уровень обрабатывает всю бизнес-логику и проверку.
Стандартный процесс CRUD выглядит следующим образом:
пользователь отправляет форму через представление -> представление отправляет контроллеру -> контроллер отправляет на сервисный уровень для обработки -> сервисный уровень может выполнять любую бизнес-логику и проверку запроса -> затем сервисный уровень отправляет данные в модель -> модель выполняет транзакцию с EntityNew () и EntitySave () -> модель затем отправляет ответ с идентификатором обратно на сервисный уровень -> Сервисный уровень применяет некоторую логику и создает сообщение для пользователя -> сервисный уровень, который отправляет ответное сообщение контроллеру -> контроллер затем отправляет его в представление -> представление затем отображает его пользователю.
Этот процесс работает хорошо, и я доволен разделением ролей. Он сохраняет всю логику в стороне от вида, контроллера и модели и изолирует ее на уровне обслуживания.
У меня вопрос, когда мне нужно связаться с базой данных на уровне сервиса для таких вещей, как проверка уникальности имени пользователя для проверки, как мне это сделать? Прямо сейчас я просто запускаю EntityLoad () прямо в сервисном слое. Похоже, что технически это происходит на уровне модели и напрямую взаимодействует с базой данных посредством ORM. Будет ли это рассматриваться как нарушение структуры MVC.
Еще одна вещь, в которой я не уверен, это то, что мне нужно заполнить раскрывающийся список в представлении данными из базы данных. Я запускаю EntityLoad () прямо в представлении, чтобы получить данные для раскрывающегося списка. Опять же, это технически обход модели с обменом данными с базой данных через ORM.
Думаю, меня просто смущают лучшие практики использования ORM в строгой среде MVC. Должны ли у меня быть отдельные методы в моих файлах модели для каждого взаимодействия с базой данных, а затем просто иметь представление или сервисный уровень, взаимодействующий с этими методами в модели? Организация всего кажется потерянной, когда я пытаюсь думать об этом так.
Просто пытаюсь обдумать это.
Любая помощь по этому вопросу будет принята с благодарностью.
Заранее спасибо.