• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

엔티티와 값객체와의 차이

23.10.12 21:23 작성 조회수 201

0

엔티티와 값객체와의 차이 중 하나가 값객체는 바운디드 컨텍스트를 옮겨 가더라도, 그 네이밍 그대로 유지할 수 있는 반면, 엔티티는 변경해야할 수도 있다고 생각하는데, 맞을까요?

예를 들어, Address(주소, 상세주소, 우편번호 포함)라는 값객체를 만들었을 때, 회원 바운디드 컨텍스트에서 회원의 주소와 주문 바운디드 컨텍스트에서 주문자의 주소의 경우, 다른 점이 없는 반면, User 라는 엔티티는 주문 바운디드 컨테스트에서 주문자이고, 리뷰 바운디드 컨텍스트에서는 리뷰어일 수 있어서, 다를 수 있다고 생각했거든요!

답변 1

답변을 작성해보세요.

2

  1. 불변성: 도메인 주도 설계에서 엔터티와 값 객체 간의 주요 차이점은 값 객체는 불변이며, 엔터티는 가변 식별자를 가진다는 것입니다. 값 객체는 엔터티의 특성 또는 속성을 나타내며 독립적으로 고유하게 식별되지 않습니다. 엔터티는 고유한 식별자를 가지며 속성을 변경할 수 있으면서도 동일한 식별자를 유지할 수 있습니다.

  2. 경계 컨텍스트: 경계 컨텍스트는 DDD에서 모델이 적용되는 구체적인 범위를 정의하는 개념입니다. 값 객체는 종종 경계 컨텍스트 간에 더 쉽게 이동할 수 있습니다. 값 객체는 불변이며 고유한 식별자가 없기 때문에 이름을 변경하지 않고 다른 컨텍스트에서 재사용할 수 있습니다. 예를 들어 "주소" 값 객체는 "회원" 컨텍스트와 "주문" 컨텍스트와 같은 다양한 컨텍스트에서 변경없이 사용될 수 있습니다.

  3. 엔터티와 경계 컨텍스트: 엔터티는 서로 다른 역할로 다른 경계 컨텍스트에서 존재할 수 있지만, 각 컨텍스트 내에서 일관된 식별자를 유지합니다. 이름이 반드시 변경되지 않아도 됩니다. 예를 들어 "사용자" 엔터티는 하나의 컨텍스트에서 "주문자"이고 다른 컨텍스트에서 "리뷰어"가 될 수 있지만 "사용자"로서의 식별은 동일합니다.

따라서 주요 차이점은 이름이 아니라 값 객체의 불변성 및 엔터티의 가변 식별자에 있습니다. 엔터티는 다양한 컨텍스트에서 역할을 변경할 수 있지만 각 컨텍스트 내에서 식별이 일관되게 유지됩니다. 값 객체는 불변성으로 인해 이름을 변경하지 않고 다양한 컨텍스트에서 쉽게 재사용될 수 있습니다. ^ ^;;;