Бизнес-уровень, уровень данных, куда помещать запросы?

StackOverflow https://stackoverflow.com/questions/1691339

  •  18-09-2019
  •  | 
  •  

Вопрос

У меня есть уровень доступа к данным, который имеет отдельные классы для каждой таблицы в базе данных.Каждый класс создает объекты, которые ссылаются на строку в таблице, у них есть функции create, update, delete и fetch.Все они расширяют класс DBObj.Мой вопрос в том, допустим, я хочу написать запрос к SELECT * FROM table, и иметь это в функции.Где лучше всего это разместить?На бизнес-уровне или сгруппировать все связанные функции в соответствующих классах уровня данных?Это на PHP, если это имеет значение, с использованием MySQL.

Это было полезно?

Решение

Поместите SQL-запросы на уровень данных.

Для запроса типа SELECT * FROM table, Независимо от того, делаете ли вы это методом класса самой модели или методом объекта менеджера модели, это вопрос стиля.

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

Другие советы

Я только что нашел ваш вопрос и подумал о том, чтобы высказать другую точку зрения.Вы должны в большинстве приложений (не буду говорить "в каждом", но это близко к этому) создать уровень абстракции данных, в большинстве случаев определяемый как ORM framework.

Однако будьте осторожны, уровень доступа к данным (DAL) не следует путать с Уровнем домена или уровнем бизнес-логики, в зависимости от вашего архитектурного подхода.Если вы хотите углубиться в эту тему, я думаю, что каждый разработчик должен, вы можете обратиться к Статьи Мартина Фаулера, также вы можете прочитать это запись в блоге, которую я сделал некоторое время назад, далеко не такая важная, как M.Фаулер, но я высказал кое-какие соображения по этому поводу.

С наилучшими пожеланиями, Дэвид

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top