我还在研究这种模式(即CQRS),我的一位同事开始在我们的小项目中实现它,但坦率地说,我确实对它的实现有一些疑问.
对于初学者我们没有使用任何特定的框架,我们用Java开发了Spring Boot(但这个问题不是特定于编程语言的).您可能会发现另一件非常奇怪的事情是该模式尚未完全实现,只是命令和查询分离概念(没有事件,没有聚合,没有真正的总线).
让我们以自下而上的方式来看看我们做了些什么:
我不想深入了解我们的实现,因为我只想知道以下命令是否可行.
@Data // Lombok annotation
@Entity
class User {
@Id private Long id;
private String firstName;
private String lastName;
private Integer age;
}
@Value
class EditUserCommand {
private final User user;
}
@Service
class EditUserCommandHandler extends CommandHandler<EditUserCommand> {
@Inject
private UserRepository users;
@Override
public void handle(final EditUserCommand command) {
User old = this.users.findOne(command.getUser().getId());
User current = command.getUser();
current.setId(old.getId());
current = this.users.save(current);
}
}
Run Code Online (Sandbox Code Playgroud)
这就是我们在项目中实施模式(或者更确切地说是C&Q Separation概念)的方式......但坦率地说?我不知道它是否正确,我发现代码与CQRS模式非常不同.我的问题是:
在此先感谢您的回复.
cqrs ×1