在项目中开始使用ddd之后,我具有以下体系结构:
Nb:我只有一个AR,因为它应该是微服务,在这里我只说“命令”。
我需要两种实例化AR的方法:
在第一种情况下,我需要创建一个ID,进行一些检查等。 在第二种情况下,我只想从数据库中包含的数据重新创建AR。
我应该如何/在哪里做?
对于通过输入进行的创建,我可以在应用程序服务中做到这一点(这是一个简单的示例):
public class CreateUser {
private final UserRepository userRepository;
public User execute(String name) {
User user = new User(UUID.randomUUID(), name);
return userRepository.create(user);
}
}
要从数据库加载AR,我可以:
关于如何优雅地进行此操作的任何想法?
答案 0 :(得分:0)
从数据库加载聚合时,使用构造函数创建聚合的新实例的概念是错误的。您不必调用任何构造函数,工厂或验证任何字段。只需使用getAggregateOfId方法从存储库中获取它,该方法将返回已构造的聚合,并使用数据库中存储的状态进行构建。