如何在AxonFramework或其他Event-Sourcing框架中从db中加载一个聚合对象?

问题描述 投票:0回答:1

我有这个问题已经很久了。对于互联网上的大多数样本。他们总是先创建一个聚合对象,然后再操作聚合对象。我的问题是,除了每次都创建一个之外,我怎么能从db中加载一个。我以e-sopping为例。我把一个产品当作一个聚合对象。我不能把所有的产品都加载到我的程序内存中。那我怎么做呢?

我所做的是,我写了另一个参数为UpdateProductCommand的构造函数,以及参数为CreateProductCommand的构造函数。在这个构造函数中,我从db中加载它,这样可以吗?

class Product{

    public Product(){}

    @CommandHandler
    public Product(CreateProductCommand command){
        apply(new CreateProductEvent(command.id));
    }

    @CommandHandler
    public Product(UpdateProductCommand command){
        load(command.id)
        ...
        apply(new UpdateProductEvent(command.id));
    }
}
frameworks domain-driven-design event-sourcing axon
1个回答
4
投票

我假设你想使用 状态存储总量 你可以查看链接了解更多信息。

为了给你一些帮助,我必须看看你在哪个字段上标有 @Id@AggregateIdentifier 但假设你有一个 String id (这是你的 command.id@TargetAggregateIdentifier 以及),Axon负责根据该字段从数据库中加载Aggregate。说了这么多,你不必自己去处理,只需要关注你的业务逻辑(也就是验证),并在需要的时候应用新的值。

© www.soinside.com 2019 - 2024. All rights reserved.