хранить сущности Product в приватном методе _products[]
Но что делать, если нужно хранить также несколько Order-в со своими Product-ми внутри? Создать ещё один родительский агрегат или как?
Заранее извиняюсь, если вопрос тупой, недавно только интересуюсь архитектурой
Order не может хранить Products. Это разные агрегаты, которые вероятнее всего даже в разных контекстах будут: Sales и Catalog например. Никаких объектных ссылок между ними быть не может. Order может хранить OrderItem s, в котором в свою очередь хранится идентификатор продукта (не ссылка на объект продукта, а просто идентификатор). Вначале достаешь сколько угодно ордеров. Потом отдельно достаешь по идентификаторам Products. Далее приводишь в нужный формат твоего API эти две отдельные коллекции.
А собственно где тогда хранить сами сущности Product, если их нужно на какое-то время держать в кэше, чтобы не запрашивать из бд по идентификатору?
OrderItem должен быть самостоятельным и не зависеть от Product то есть должен иметь наименование, цену, фото от товара в момент оформления закзаа
А что значит "где хранить"? Ну наверное в какой-то БД. Наверное будет какой-то класс-репозиторий, который достанет по айдишникам коллекцию продуктов. Наверное кто-то дернет этот репозиторий, ну пусть это будет какой-то контроллер вашего API в простейшем случае. Если вам надо закэшировать результат, то наверное внутри контроллера вы вначале дерните кэш, и если в кэше пусто, то дернете репозиторий.
Кажется, пазл немного сложился. Тогда наверное сохраню сущности в каком-нибудь классе Memory и через репозиторий буду дергать
Точнее хранить не сами сущности, а данные и при выводе сделать их сущностями. Как-то так
Ты прям про процесс сохранения долгосрочного говоришь или тебе для событий нужно?
Недолго. Но я не знаю, что значит для событий? Там много событий будет, пока они там хранятся...
Удачи с такими подходами. Айдишка + ревизия - да. Дублировать в себя половину продукта - добро пожаловать в ад координации команд
много лет применяю и проблем не знаю. координации каких команд?
Вот по этому и не знаешь проблем.
Если у вас в команде не замечено проблем и дальше она расти скорее всего не будет, а текущий подход работает. Зачем?
не понял вопроса. зачем что?
Зачем переживать и пытаться распилить агрегат сейчас, когда проблемы нет. Если до этого опыта не было, может быть больно от последствий неправильного распила
я ваще не переживаю. мы с человеком-блином просто обсуждаем
Обсуждают сегодня