[DDD] ENTITY(엔티티)

0️⃣1️⃣·2024년 2월 4일
0

DDD

목록 보기
5/21
post-custom-banner

식별성

어떤 객체를 일차적으로 해당 객체의 식별성으로 정의할 경우 그 객체를 ENTITY라 한다. ENTITY에는 모델링과 설계상의 특수한 고려사항이 포함돼 있다. ENTITY는 자신의 생명주기동안 형태와 내용이 급격하게 바뀔 수도 있지만 연속성은 유지해야 한다. 또한 사실상 ENTITY를 추적하려면 ENTITY에 식별성이 정의돼 있어야 한다.

ENTITY의 클래스 정의와 책임, 속성, 연관관계는 ENTITY에 포함된 특정 속성보다는 ENTITY의 정체성에 초점을 맞춰야 한다. ENTITY가 그렇게까지 급격하게 변형되지 않거나 생명주기가 복잡하지 않더라도 의미에 따라 ENITTY를 분류한다면 모델이 더욱 투명해지고 구현은 견고해질 것이다.

객체의 속성

객체의 속성으로 객체의 일치 여부를 판단하는 요구사항에 주의해라. 각 객체에 대해 유일한 결과를 반환하는 연산을 정의하라. 이러한 연산은 객체에 유일함을 보장받는 기호를 덧붙여서 정의할 수 있을지도 모른다. 이 같은 식별 수단은 외부에서 가져오거나 시스템에서 자체적으로 만들어 내는 임의의 식별자일 수도 있지만, 모델에서 식별성을 구분하는 방법과 일치해야 한다. 모델은 동일하다는 것이 무슨 의미인지 정의해야 한다.

모델링

  • ENTITY의 가장 기본적인 책임은 객체의 행위가 명확하고 예측 가능해질 수 있게 연속성을 확립하는 것

  • ENTITY의 속성이나 행위에 집중하기보다는 ENTITY 객체의 가장 본질적인 특징(특히 해당 ENTITY를 식별하고 탐색하며 일치시키는 데 널리 사용되는)만으로 정의한다.

  • 개념에 필수적인 행위만 추가하고 그 행위에 필요한 속성만 추가한다. 그 밖의 객체는 행위와 속성을 검토해서 가장 중심이 되는 ENTITY와 연관관계에 있는 다른 객체로 옮긴다. (ENTITY OR VALUE OBJECT)

  • 식별성과 연관관계가 있는 속성은 ENTITY에 존재해야 한다.

식별 연산의 설계

  • 각 ENTITY에는 다른 객체와 구분해줄 식별성을 만들어내는 수단이 반드시 있어야 한다. 식별에 사용되는 속성은 시스템의 상태와 관계없이 해당 시스템 내에서 유일해야 한다.

  • 자동으로 ID가 생성되는 경우라면 사용자는 자동 생성된 ID를 전혀 볼 필요가 없을지도 모른다. 연락처 애플리케이션이라면, 이름이 정확히 동일한 두 개의 연락처를 간단하고 명확한 방법으로 구분해 낼 수 있어야 한다.

  • 화물 배송 서비스를 이용해 소포를 발송하는 경우 사용자는 조회번호를 받게 되는데, 이러한 조회번호는 배송업체의 소프트웨어에서 만들어지며, 사용자는 그 번호로 소포를 확인하고 소포가 어디까지 배송됐는지 확인할 수 있다.

post-custom-banner

0개의 댓글