public void removeItem(final ProductId productId) {
final CartItem itemToRemove = getItemBy(productId);
items.remove(itemToRemove);
}
private CartItem getItemBy(final ProductId productId) {
return findItemBy(productId)
.orElseThrow(() -> new IllegalArgumentException("cartItem with %s not found".formatted(productId)));
}
private Optional findItemBy(final ProductId productId) {
return items.stream()
.filter(lineItem -> productId.equals(lineItem.productId()))
.findFirst();
}
уместно ли идентифицировать и удалять/обновлять подобные дочерние объекты, используя их идентификаторы через совокупный корень?
Или есть лучший шаблон для обработки таких изменений?
Поскольку JPA обычно требует загрузки всей дочерней коллекции (элементов) для выполнения этой операции, я не уверен, подойдет ли этот подход или можно ли его использовать вызывают проблемы с масштабируемостью.
Пожалуйста, дайте мне знать, если я что-то не понимаю.
Мне интересно, как правильно изменять дочерние объекты через совокупный корень. Пример объекта корзины (агрегированный корень) [code] public void removeItem(final ProductId productId) { final CartItem itemToRemove = getItemBy(productId); items.remove(itemToRemove); }
private CartItem getItemBy(final ProductId productId) { return findItemBy(productId) .orElseThrow(() -> new IllegalArgumentException("cartItem with %s not found".formatted(productId))); }
private Optional findItemBy(final ProductId productId) { return items.stream() .filter(lineItem -> productId.equals(lineItem.productId())) .findFirst(); } [/code] [list] [*]уместно ли идентифицировать и удалять/обновлять подобные дочерние объекты, используя их идентификаторы через совокупный корень? Или есть лучший шаблон для обработки таких изменений?
[*]Поскольку JPA обычно требует загрузки всей дочерней коллекции (элементов) для выполнения этой операции, я не уверен, подойдет ли этот подход или можно ли его использовать вызывают проблемы с масштабируемостью.
[/list] Пожалуйста, дайте мне знать, если я что-то не понимаю.