我在批发系统领域工作。当一些产品交付时,域NewProductsDeliveredEvent
被触发。事件包含一组ProductDelivery
包含产品代码和数量的值对象。如下所示:
class NewProductsDeliveredEvent {
Set<ProductDelivery> productDeliveries;
}
class ProductDelivery {
ProductCode productCode;
Quantity quantity
}
到目前为止,一切都很好。现在,当负责库存更新的组件收到此类事件时。它必须使用当前可用产品数量更新产品表。所以我有这样的事情:
class NewProudctsDeliveredHandler {
ProductRepository productRepo;
handle(NewProductDeliveryEvent event) {
for (ProductDelivery delivery : event.getProductDeliveries()) {
Product product = productRepo.getByCode(delivery.getProductCode())
product.updateQuantity(delivery.getQuantity());
}
}
}
很容易发现这样的逻辑会产生大量的数据库往返,我正在考虑一些解决方案来减轻痛苦。一种想法可能是使用Specification
模式并为产品代码构建 OR 规范。但是,在我的应用程序中,产品代码是一个业务标识符,所以这个解决方案有点味道(也许我只是在夸大其词)。
有没有更好的处理方法?任何想法都非常感谢。