Aggregate for one entity

微笑、不失礼 提交于 2019-12-23 10:06:02

问题


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?


回答1:


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.




回答2:


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.



来源:https://stackoverflow.com/questions/28657637/aggregate-for-one-entity

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!