Как организовать Lazy Load в DDD? Здравсвтуйте.
Каким образом правильно организовать LazyLoad в DDD. Правильно ли использовать Rich Domain Model и пихать в нее репозитории ?
Просто есть недопонимание. Потому что во многих источниках пишут, что Доменная модель ничего не должна знать о слое персистнетности. Ок. И не иметь зависимостей вверх по уровню (сервисы и т.д.). Спрашиваешь, как тогда организовать Lazy Load , отвечают:
Либо используй события, что сложно для отладки и все равно требует диспетчера.
Либо используй для этого прямые обращения в репозиторий. Тогда резонный вопрос, на кой все эти модели доменные и т.д. если вся работа все равно будет выполняться через сервисы ?
Если я не могу сделать $user->etProducts(); а должен вызывать репозиторий и через него обращаться ?
Зачем тогда городить огороды из мапперов ?
Опять же при реализации доменной модели необходимо создавать и IdentityMap ? И в итоге получается реализация над ORM, которая толком не позволяет использовать возможности ORM, потому как все связи прокидываются через настрйоки в ДТО.

21 Авг 2019 в 07:05
216 +1
0
Ответы
1

Lazy Load можно организовать в DDD, следуя принципам чистой архитектуры. Вам не обязательно использовать Rich Domain Model и включать репозитории в вашу доменную модель. Вместо этого, вы можете использовать сервисный слой для организации Lazy Load.

Для организации Lazy Load в DDD, вы можете использовать специальные сервисы, которые будут выполнять запросы к хранилищу данных (репозитории) только в тот момент, когда это действительно необходимо. Например, вы можете создать сервис, который будет загружать продукты для пользователя только в момент вызова метода getProducts().

Использование событий или прямых обращений к репозиторию также возможно, но это может привести к сложной структуре кода и усложнить отладку. Поэтому рекомендуется использовать сервисный слой для организации Lazy Load.

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

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

20 Апр 2024 в 13:07
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир