Aggregate는 관련 있는 객체들을 하나의 군(Cluster)으로 묶고, 일관성을 보장해야 할 경계를 정의하는 개념입니다.
class Order { // Aggregate Root
private Long id;
private List<OrderItem> items;
public void addItem(Product product, int quantity) {
items.add(new OrderItem(product, quantity));
}
// 외부에서 OrderItem에 직접 접근/수정 금지
}
class OrderItem { // 내부 엔티티 (Aggregate 내부)
private Product product;
private int quantity;
}
Order는 Aggregate Root.OrderItem은 외부에서 직접 조작하지 않고, 항상 Order를 통해서만 수정.