DDD, тяжелые запросы для построения сущности
Добавлено: 2019.01.23, 06:38
Всем добра!
Развиваюсь в сторону DDD, есть интересный для меня вопрос.
Ситуация(для примера):
- есть доменная сущность House
- в этой сущности есть метод getSummCount, результат метода - число, но формируется оно очень тяжеловесным SQL запросом.
Сейчас, на этапе разработки, я запилил SQL-запрос прямо в доменную сущность. Плюсы - работает. Минусы - не тестируется, инфраструктурная логика в домене. Понимание того, что в домене не должно быть репозитарного кода - имеется.
Итак.
Первая идея - реализация в сервисе с учётом переданного репозитория, например HouseService->findById($id), где ищем по id, считаем summCount, и отдаём в конструктор return new House (...., $summCount). Минусы - запрос тяжелый, и нужен совсем не везде.
Вторая идея - в нужном контроллере, после получения сущности, делать метод HouseService->calcSummCount, который будет делать set для нашего экземпляра в переменную House->summCount
Как мне сделать эту цифру "по необходимости", к чему стремиться?
Развиваюсь в сторону DDD, есть интересный для меня вопрос.
Ситуация(для примера):
- есть доменная сущность House
- в этой сущности есть метод getSummCount, результат метода - число, но формируется оно очень тяжеловесным SQL запросом.
Сейчас, на этапе разработки, я запилил SQL-запрос прямо в доменную сущность. Плюсы - работает. Минусы - не тестируется, инфраструктурная логика в домене. Понимание того, что в домене не должно быть репозитарного кода - имеется.
Итак.
Первая идея - реализация в сервисе с учётом переданного репозитория, например HouseService->findById($id), где ищем по id, считаем summCount, и отдаём в конструктор return new House (...., $summCount). Минусы - запрос тяжелый, и нужен совсем не везде.
Вторая идея - в нужном контроллере, после получения сущности, делать метод HouseService->calcSummCount, который будет делать set для нашего экземпляра в переменную House->summCount
Как мне сделать эту цифру "по необходимости", к чему стремиться?