4

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

У меня есть Пользователь, у которого есть идентификатор, логин, адрес электронной почты и пароль. Пользователь - это домен Entity с уникальным идентификатором.

Когда я хочу добавить репозиторий User to User, должен ли я сначала создать Aggregate с только Aggregate Root, который является моим объектом User и не более? Он выглядит как прокси для пользователя в этом случае, ненужный слой.

Или, может быть, я что-то пропустил? Возможно, пользователь не является Entity, даже если он выглядит так. Или, может быть, я могу помещать Entity прямо в репозиторий?

ответ

5

Совокупный корень (AR) - это объект, и очень распространено иметь сущности, которые являются корнем их собственного агрегата.

Ваш объект User будет просто заполнить корень. Вам не нужен дополнительный конкретный класс.

1

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

Важно то, что мы не создаем агрегаты для репозиториев, мы создаем репозитории, потому что нам нужно сохранять агрегаты.

Репозитории имеют дело с целыми агрегатами, ничего больше и не меньше. Они сохраняют транзакционную границу, которая должна определять вашу совокупность.

Когда я хочу, чтобы добавить пользователя в хранилище пользователя, я должен построить первый в агрегат с только агрегатный корень, что моя сущность пользователя и ничего больше? Он выглядит как прокси для пользователя в этом случае, ненужный слой.

Совершенно ничего плохого в агрегатах с одним сущностью. Сущность в этом случае будет совокупным корнем и всей совокупностью.

Я бы порекомендовал вам прочитать Vaughn Vernon's Effective Aggregate Design series.

Смежные вопросы