Aggregate for one entity
Asked Answered
M

2

8

In Domain-driven design if I want to use a repository I need to have an aggregate for it - as I understand.

So I have a User, that has id, login, email, and password. A user is a domain Entity with unique Id.

When i want to add a User to User repository, should I build first an Aggregate with only Aggregate Root that is my User entity and nothing more? It looks like a proxy to User in this case, unneeded layer.

Or maybe I missed something here? Maybe User isnt an Entity, even if it looks like this. Or maybe I can put an Entity directly to repository?

Marenmarena answered 22/2, 2015 at 12:11 Comment(0)
J
9

An aggregate root (AR) is an entity and it's very common to have entities which are the root of their own aggregate.

Your User entity would simply be an aggregate root. You do not need an extra concrete class.

Jereme answered 22/2, 2015 at 23:5 Comment(0)
P
3

In Domain-driven design if I want to use a repository I need to have an aggregate for it - as I understand.

An important thing that I would like to raise is that we don't create aggregates for repositories, we create repositories because we need to persist aggregates.

Repositories deal with whole aggregates, nothing more and nothing less. They preserve the transactional boundary which is what should define your aggregate.

When i want to add a User to User repository, should I build first an Aggregate with only Aggregate Root that is my User entity and nothing more? It looks like a proxy to User in this case, unneeded layer.

There is absolutely nothing wrong with single-entity aggregates. An entity in this case will be the aggregate root and the entirety of the aggregate.

I would recommend that you read Vaughn Vernon's Effective Aggregate Design series.

Puke answered 23/2, 2015 at 12:57 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.