• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    해결됨

VO에 대해서 질문있습니다.

24.01.03 17:36 작성 24.01.03 17:45 수정 조회수 145

0

Entity를 설계 하다가 자주 변하지만 응집도가 높은 값들은 어떻게 해야할까요?

  1. 자주 변하지만 응집도가 높은 값들은 VO를 사용한다.

    1. VO로 선언된 값의 수정은 불가능 하지만 생성으로 값을 초기화 한다.

  2. 그냥 이러한 상황에서는 응집도가 높아도 VO를 고려하지 하지 않는다.

  3. 수정 기능이 필요하다면 VO가 아닌 Entity를 고려해야 한다?

     

답변 1

답변을 작성해보세요.

2

안녕하세요. 한정헌입니다.

우선 DDD에서 VO(Value Object)와 엔터티는 서로 다른 목적을 제공하는 두 가지 개념입니다. 먼저 정의를 명확히 해보겠습니다.

  1. 값 객체(VO): 값 객체는 개념적 동일성이 없는 도메인의 설명적 측면을 나타내는 객체입니다. 즉, 변경할 수 없으며 동일한 값을 가진 두 개의 값 개체가 동일한 것으로 간주됩니다. VO는 응집력이 높고 자주 변경되지 않는 속성에 사용되는 경우가 많습니다.

  2. 엔티티: 엔터티는 시간과 다양한 상태를 통해 실행되는 고유한 ID를 갖는 객체입니다. 이는 종종 라이프사이클이 있는 비즈니스 객체를 나타냅니다. 엔터티는 변경 가능합니다. 즉, 엔터티 상태는 시간이 지남에 따라 변경될 수 있습니다.

그럼 자주 변경되지만 응집력이 높은 값에 대한 질문에 대해 말씀드리면:

  • 값이 자주 변경되지만 응집력이 높은 경우 Value Object보다는 Entity를 사용하는 것이 더 적절할 수 있습니다.

  • 편집 기능이 필요하고 값이 변경될 수 있는 경우 엔터티를 사용하는 것이 합리적인 선택입니다. 엔터티는 변경 가능하므로 필요에 따라 상태를 수정할 수 있습니다.

  • 그러나 Id 개념을 신중하게 고려해봐야 합니다. 즉 시간이 지나도 변화하는 값이 여전히 동일한 개념적 엔터티를 나타내는 경우에 엔터티를 사용하는 것이 적절합니다.

요약하자면, 엔터티와 값 개체 사용 간의 결정은 값의 개념적 동일성과 값이 변경 가능해야 하는지 불변이어야 하는지 여부에 따라 달라집니다. 값이 고유한 ID를 나타내고 편집해야 하는 경우 엔터티가 더 적합할 가능성이 높습니다. 값이 설명적이고 응집력이 높은 경우에도 일정하게 유지되어야 하는 경우 Value Object 가 답이고요.

ㅎ 좀 설명이 계속 개념적일 수 밖에 없네요.

구체적인 사례,예를 주시면 좀더 고민해 볼 수 있을 것 같네요.

감사합니다.