212 похожих чатов

Всем привет, вопрос по DDD. Есть сущность Product Есть агрегат Order Например, Order

хранить сущности Product в приватном методе _products[]

Но что делать, если нужно хранить также несколько Order-в со своими Product-ми внутри? Создать ещё один родительский агрегат или как?

Заранее извиняюсь, если вопрос тупой, недавно только интересуюсь архитектурой

16 ответов

9 просмотров

Order не может хранить Products. Это разные агрегаты, которые вероятнее всего даже в разных контекстах будут: Sales и Catalog например. Никаких объектных ссылок между ними быть не может. Order может хранить OrderItem s, в котором в свою очередь хранится идентификатор продукта (не ссылка на объект продукта, а просто идентификатор). Вначале достаешь сколько угодно ордеров. Потом отдельно достаешь по идентификаторам Products. Далее приводишь в нужный формат твоего API эти две отдельные коллекции.

TgJs- Автор вопроса
Roman N
Order не может хранить Products. Это разные агрега...

А собственно где тогда хранить сами сущности Product, если их нужно на какое-то время держать в кэше, чтобы не запрашивать из бд по идентификатору?

OrderItem должен быть самостоятельным и не зависеть от Product то есть должен иметь наименование, цену, фото от товара в момент оформления закзаа

TgJs
А собственно где тогда хранить сами сущности Produ...

А что значит "где хранить"? Ну наверное в какой-то БД. Наверное будет какой-то класс-репозиторий, который достанет по айдишникам коллекцию продуктов. Наверное кто-то дернет этот репозиторий, ну пусть это будет какой-то контроллер вашего API в простейшем случае. Если вам надо закэшировать результат, то наверное внутри контроллера вы вначале дерните кэш, и если в кэше пусто, то дернете репозиторий.

TgJs- Автор вопроса
Roman N
А что значит "где хранить"? Ну наверное в какой-то...

Кажется, пазл немного сложился. Тогда наверное сохраню сущности в каком-нибудь классе Memory и через репозиторий буду дергать

TgJs- Автор вопроса
TgJs
Кажется, пазл немного сложился. Тогда наверное сох...

Точнее хранить не сами сущности, а данные и при выводе сделать их сущностями. Как-то так

TgJs
Кажется, пазл немного сложился. Тогда наверное сох...

Ты прям про процесс сохранения долгосрочного говоришь или тебе для событий нужно?

TgJs- Автор вопроса
Anthony Zubkov
Ты прям про процесс сохранения долгосрочного говор...

Недолго. Но я не знаю, что значит для событий? Там много событий будет, пока они там хранятся...

Anton K.
OrderItem должен быть самостоятельным и не зависет...

Удачи с такими подходами. Айдишка + ревизия - да. Дублировать в себя половину продукта - добро пожаловать в ад координации команд

Sergey P
Удачи с такими подходами. Айдишка + ревизия - да. ...

много лет применяю и проблем не знаю. координации каких команд?

Anton K.
много лет применяю и проблем не знаю. координаци...

Если у вас в команде не замечено проблем и дальше она расти скорее всего не будет, а текущий подход работает. Зачем?

Anton K.
не понял вопроса. зачем что?

Зачем переживать и пытаться распилить агрегат сейчас, когда проблемы нет. Если до этого опыта не было, может быть больно от последствий неправильного распила

Arseniy Skurt
Зачем переживать и пытаться распилить агрегат сейч...

я ваще не переживаю. мы с человеком-блином просто обсуждаем

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта