해결된 질문
작성
·
245
·
수정됨
답변 1
2
안녕하세요. 한정헌입니다.
우선 DDD에서 VO(Value Object)와 엔터티는 서로 다른 목적을 제공하는 두 가지 개념입니다. 먼저 정의를 명확히 해보겠습니다.
값 객체(VO): 값 객체는 개념적 동일성이 없는 도메인의 설명적 측면을 나타내는 객체입니다. 즉, 변경할 수 없으며 동일한 값을 가진 두 개의 값 개체가 동일한 것으로 간주됩니다. VO는 응집력이 높고 자주 변경되지 않는 속성에 사용되는 경우가 많습니다.
엔티티: 엔터티는 시간과 다양한 상태를 통해 실행되는 고유한 ID를 갖는 객체입니다. 이는 종종 라이프사이클이 있는 비즈니스 객체를 나타냅니다. 엔터티는 변경 가능합니다. 즉, 엔터티 상태는 시간이 지남에 따라 변경될 수 있습니다.
그럼 자주 변경되지만 응집력이 높은 값에 대한 질문에 대해 말씀드리면:
값이 자주 변경되지만 응집력이 높은 경우 Value Object보다는 Entity를 사용하는 것이 더 적절할 수 있습니다.
편집 기능이 필요하고 값이 변경될 수 있는 경우 엔터티를 사용하는 것이 합리적인 선택입니다. 엔터티는 변경 가능하므로 필요에 따라 상태를 수정할 수 있습니다.
그러나 Id 개념을 신중하게 고려해봐야 합니다. 즉 시간이 지나도 변화하는 값이 여전히 동일한 개념적 엔터티를 나타내는 경우에 엔터티를 사용하는 것이 적절합니다.
요약하자면, 엔터티와 값 개체 사용 간의 결정은 값의 개념적 동일성과 값이 변경 가능해야 하는지 불변이어야 하는지 여부에 따라 달라집니다. 값이 고유한 ID를 나타내고 편집해야 하는 경우 엔터티가 더 적합할 가능성이 높습니다. 값이 설명적이고 응집력이 높은 경우에도 일정하게 유지되어야 하는 경우 Value Object 가 답이고요.
ㅎ 좀 설명이 계속 개념적일 수 밖에 없네요.
구체적인 사례,예를 주시면 좀더 고민해 볼 수 있을 것 같네요.
감사합니다.