도메인모델 2

애그리거트와 리포지토리 패턴

1. 애그리거트의 핵심 역할1-1. 비즈니스 무결성을 보장하는 경계 애그리거트(Aggregate)는 도메인 주도 설계(DDD)에서 비즈니스 규칙의 일관성을 유지하는 최소 단위로 사용된다. 즉, 하나의 트랜잭션 안에서 상태 변경이 일어날 수 있는 객체의 범위를 정의한다. 여러 엔터티와 값 객체가 구성돼 있을 수 있지만, 외부에서는 루트 엔터티를 통해서만 조작 가능하다. 예를 들어 Order는 루트이고, 그 안에 OrderLine, ShippingInfo, PaymentInfo 등의 하위 객체가 있다. 외부에서는 직접 OrderLine을 수정할 수 없고, 반드시 Order를 통해 추가/삭제해야 한다. 이러한 구조는 객체 간 무결성을 유지하며, 변경 범위를 명확히 제한해준다. 결국 애그리거트는 단순한 객체 ..

컴퓨터공학 2025.05.24

Value Object vs Entity

1. 객체지향에서의 본질적인 구분1-1. 왜 두 개념이 필요한가? 소프트웨어 설계에서 모든 객체를 동일하게 취급하면, 코드가 복잡해지고 유지보수성이 떨어진다. 그래서 객체의 ‘역할’에 따라 개념적으로 구분하는 것이 중요하다. Value Object와 Entity의 구분은 바로 이 설계 명확성을 높이기 위한 핵심적인 전략이다. Value Object는 그 값 자체가 중요한 객체이고, Entity는 고유한 정체성을 가진 객체다. 동일한 데이터를 가진 두 객체라도, Value Object라면 하나로 취급되지만, Entity라면 각각 별개의 존재다. 이 구분이 없다면 동일성, 식별, 변경 추적 등의 이슈가 설계 전반에 영향을 미치게 된다. 이러한 구분은 단지 철학적 개념이 아니라, 모델링의 의도와 코딩 구현 ..

컴퓨터공학 2025.05.24