Je travaille sur le domaine du système de gros. Lorsque certains produits sont livrés, le domaine NewProductsDeliveredEvent
est déclenché. L'événement contient un ensemble d'objets de valeur ProductDelivery
contenant le code et la quantité du produit. Quelque chose comme ci-dessous:Référentiel et mise à jour en vrac - éviter les allers-retours de base de données
class NewProductsDeliveredEvent {
Set<ProductDelivery> productDeliveries;
}
class ProductDelivery {
ProductCode productCode;
Quantity quantity
}
Jusqu'ici tout va bien. Maintenant, lorsque le composant responsable des mises à jour d'inventaire reçoit ce type d'événement. Il doit mettre à jour la table des produits avec la quantité actuelle de produits disponibles. J'ai donc quelque chose comme ça:
class NewProudctsDeliveredHandler {
ProductRepository productRepo;
handle(NewProductDeliveryEvent event) {
for (ProductDelivery delivery : event.getProductDeliveries()) {
Product product = productRepo.getByCode(delivery.getProductCode())
product.updateQuantity(delivery.getQuantity());
}
}
}
Il est facile de repérer que cette logique génère beaucoup de DB et je roundtrips penser à une solution pour soulager la douleur. Une idée pourrait être d'utiliser le modèle Specification
et de construire une spécification OU pour les codes de produit. Cependant, dans mon application, le code produit est un identifiant d'entreprise, donc cette solution sent un peu (peut-être que j'exagère).
Y a-t-il une meilleure façon de le gérer? Toutes les idées grandement appréciées.
Pourquoi ne pas simplement productRepo.getByCodes (...)? – gseric
parce que je n'ai jamais vu un référentiel avec une telle méthode et pour moi il semble comme un défaut de conception (mais bien sûr, ce serait la solution la plus simple;)) –
Que fait "product.updateQuantity (delivery.getQuantity());" faire? mettre à jour l'inventaire? – Hippoom