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

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

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

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

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

16 ответов

20 просмотров

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
Карта сайта