我在批發系統領域工作。當某些產品交付時,會觸發域名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());
}
}
}
人們很容易發現這樣的邏輯產生大量DB往返的,我想一些解決方案,以減輕疼痛。一個想法可能是使用Specification
模式併爲產品代碼構建OR規範。然而,在我的應用程序中,產品代碼是商業標識符,所以這個解決方案有點味道(也許我只是誇大其詞)。
有沒有更好的方法來處理它?任何想法不勝感激。
爲什麼不只是productRepo.getByCodes(...)? – gseric
,因爲我從來沒有見過這樣的方法和對我來說似乎是一些設計缺陷(但當然,這將是最簡單的解決方案;)) –
什麼是「product.updateQuantity(delivery.getQuantity());」做?更新庫存? – Hippoom