实体可以访问存储库吗?
假设我有两个简单的实体:用户和评论。如果用户调用 Review 存储库会有多糟糕?用户获取评论的“干净”方式是什么?
class User
{
public function getReviews()
{
return reviewRepository.findByUser(this);
}
}
我确实看过这个问题,但是尽管他们说这是一个不好的做法,我在那里没有找到答案。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
DDD 中最简洁的方法是在请求用户时让 UserRepository 填写用户的评论。
但在执行此操作之前,您需要验证域中的用户实体也是 AggregateRoot!只有 AggregateRoots 具有存储库。请查看此问题以查看或获得对问题的一些见解在设计聚合根时。
The clean way in DDD is to have the UserRepository fill the reviews of the User when asking for a User.
But before you do this, you need to verify that your User Entity in your Domain is also an AggregateRoot! Only AggregateRoots have Repositories. Please take a look at this question to see or get some insights to the problems while desiging aggregateroots.