studying...
  • 노트의목적
  • 웹전반
    • HTTP
      • 1. HTTP
      • 2. HTTP_Client
      • 3. HTTP_Server
      • 4. JAVA_HTTP_Server
      • 5. Spring_Web_MVC
    • REST_API
      • 1. REST_API
      • 2. URI&MIME_type
      • 3. COLLECTION_Pattern
      • 4. COLLECTION_Pattern_adjustment
      • 5. Spring_Web_MVC
    • DTO_JSON_CORS
      • 1. DTO
      • 2. 직렬화
      • 3. Jackson
      • 4. CORS
    • Layered_Architecture
      • 1. Layered_Architecure
      • 2. Data_Access
      • 3. Domain_Model
    • DI&Spring_Test
      • 1. Dependency_Injection
      • 2. Unit_Test
      • 3. Spring_Test
      • 4. TDD
    • Database
      • 1. Database
      • 2. Relational_Model
      • 3. JDBC
    • JPA
      • 1. ORM
      • 2. Hibernate
      • 3. Embeddable
      • 4. Relationship Mapping
      • 5. Spring Data JPA
    • 도메인_주도_설계
      • 1. DDD
      • 2. Strategic Design
      • 3. Entity, Value Object
      • 4. Aggregate
      • 5. Repository
    • Hexagonal_Architecture
      • 1. SOLID
      • 2. Hexagonal_Architecture
      • 3. 도메인 주도 설계 핵심
    • Spring_Security
      • 1. 애플리케이션 보안
      • 2. 인증
      • 3. 로그인 & 로그아웃
      • 4. 회원가입
      • 5. JWT&Authority
    • File_Upload
      • 1. Multipart_FormData
      • 2. Separation_of_Concerns
      • 3. Cloudinary
    • CQRS
      • 1. CQRS
      • 2. Redis
  • 면접대비
  • book
    • RealMySQL8.0
      • 4장
      • 5장
      • 8장
      • 9장
    • Object
      • 1장
      • 2장
      • 3장
      • 4장
      • 5장
      • 6장
      • 7장
      • 8장
      • 9장
    • ModernJava
      • ch1
      • ch2
    • 클라우드네이티브를위한 쿠버네티스 실전 프로젝트
      • 1장
      • 2장
      • 3장
      • 4장
    • 테라폼 쿡북
      • 2장
      • 3장
      • 4장
      • 5장
      • 6장
  • lecture
    • 외워서끝내는네트워크기초
    • 외워서끝내는네트워크심화
    • aws
      • Architecting_on_AWS
      • Architecrting-advanced
      • Developing_on_AWS
      • migration_essentials
      • Resilience
      • Running_Containers_on_EKS
    • Ansible
    • k8s
      • section2
      • section3
    • Terraform
  • experiences
    • workshops
      • EKS
Powered by GitBook
On this page
  • 전술적 설계 (Tactical Design)
  • 엔티티 (Entity) vs 일반적으로 이야기하는 개체 (Entity)
  • 값 객체 (Value Object, VO)
  • 동일성(Identity)과 동등성(Equality)
  1. 웹전반
  2. 도메인_주도_설계

3. Entity, Value Object

Previous2. Strategic DesignNext4. Aggregate

Last updated 1 year ago

전술적 설계 (Tactical Design)

전술적 설계만 다룰 경우 DDD Lite, Model Driven Design이라고 불린다. 커다란 시스템을 만들 때 중요하고 매우 큰 주제로 간단하게 정리해보면 대표적인 패턴 몇 가지로 다룰 수 있다.

  1. Entity

  2. Value Object

  3. Aggregate

  4. Repository

엔티티 (Entity) vs 일반적으로 이야기하는 개체 (Entity)

DDD에서는 엔티티는 식별자가 존재해서 이를 통해 동일성을 확인한다면 Entity라고 할 수 있다. OOP에서 객체는 속성이 아니라 연속성, 식별성에 따라 정의된다.

값 객체 (Value Object, VO)

모든 객체가 연속성, 식별성이 중요한 것은 아니다. Value Object는 속성을 통해 동등성을 파악한다. 개발하고자 하는 비즈니스 도메인에 따라 지폐의 일련번호가 중요할수도 안 중요할 수도 있기 때문에 Value Object는 항상 equals 메서드를 구현해야 한다.

예측 가능성을 높이고 혼란을 막기 위해 가능하면 불변 객체로 만들어야 하는데 Java 14 이상이라면 record가 이를 지원한다

동일성(Identity)과 동등성(Equality)

전술적 설계 (Tactical Design)
엔티티 (Entity) vs 일반적으로 이야기하는 개체 (Entity)
값 객체 (Value Object, VO)
동일성(Identity)과 동등성(Equality)