나는 도매 시스템 도메인에서 작업합니다. 일부 제품이 배송되면 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