В настоящее время я разрабатываю структуру персистентности моего приложения ... и обсуждаю два решения для абстракции.
Вариант 1. Первый и более простой (но, возможно, более связанный сбаза данных представляет собой двухуровневый подход. В этом подходе средства отображения данных извлекают данные из базы данных и создают бизнес-объекты.
Примерная схема рабочего процесса:
UserEntity <= UserMapper => Database
Вариант 2. Второй, более гибкий (но возможный излишний) подход - это трехуровневый подход. В этом подходе у нас есть объект THIRD, задачей которого является исключительно обращение к базе данных и возврат массива данных в данные.Mapper, который затем создает объект.
Грубая диаграмма:
UserEntity <= UserMapper <= UserDataRetriever => Database
Очевидно, что преимущество первого варианта в том, что он проще и, следовательно, быстрее в создании. Преимущество второго варианта заключается в том, чточто мне проще изменить мои методы персистентности, поскольку мне нужно всего лишь изменить подключение моего DataRetriever к БД (и связанные запросы).
Поскольку размер этого сайта будет очень быстро увеличиваться в размере, я бы хотел выбрать наиболее гибкий вариант, не выходя на анти-шаблонную территорию.
Что лучше?