Model vs Domain vs Entity

Jiwon Jung·2025년 11월 10일

스프링(Spring)

목록 보기
11/20

이번 포스팅에서는 Model vs Domain vs Entity의 차이점에 대해 기록한다.


🌊 Model

  • Model은 데이터 구조비즈니스 로직을 나타내는 광범위한 개념이다.
  • MVC 패턴에서 모델은 애플리케이션의 데이터와 그 데이터를 처리하는 비즈니스 로직을 포함한다.

📁 패키지 구성

  • 일반적으로 model 패키지는 애플리케이션에서 사용하는 데이터 모델과, 때로는 비즈니스 로직을 포함할 수 있다.
  • 이는 엔티티, VO와 같은 도메인 모델을 포함할 수도 있고, DTO 같은 데이터 전송 객체를 포함할 수도 있다.

🌊 Domain

  • 도메인은 소프트웨어로 해결하고자 하는 문제 영역이다.
  • 즉, 요구 사항을 구현하고 문제를 풀기 위해 설계된 소프트웨어 프로그램의 기능성을 정의하는 영역이다.
  • DDD에서는 이 문제 영역을 중심으로 모델링을 진행한다.
  • 도메인 내에서 비즈니스 로직애플리케이션이 핵심 기능이 정의되고 구현된다.

📁 패키지 구성

  • Entity
    - 도메인 내의 핵심 개념을 나타내는 객체이다.
    - 식별자(ID)에 의해 구별된다.
    - 엔티티는 비즈니스 로직을 포함하며, 도메인의 상태를 관리한다.
  • VO(Value Object)
    - 엔티티와 달리 식별자(ID)를 가지지 않는 불변 객체이다.
    - VO는 도메인의 특성이나 속성을 나타내며, 로직을 포함할 수 있다.
  • Domain Service
    - 도메인 로직 중 엔티티나 VO에 속하지 않는 로직을 처리한다.
    - 여러 엔티티 간의 관계나 도메인 특정 작업을 수행한다.
  • Repository
    - 엔티티의 지속성을 관리하는 인터페이스를 정의한다.
    - 구현체는 인프라 스트럭처 계층에 위치한다.
  • Aggregate
    - 관련 엔티티와 VO를 하나의 단위로 묶는 개념이다.
    - Aggregate root는 집합의 대표 엔티티로, 외부에서는 aggregate root를 통해 집합과 상호작용한다.

🌊 Entity

  • 엔티티는 도메인 모델의 핵심 구성 요소로, 도메인 내에서 유일한 식별자(ID)를 가지며 시간에 따라 상태가 변할 수 있는 객체이다.

📁 패키지 구성

  • entity 패키지는 도메인의 핵심 개념을 나타내는 클래스들을 포함한다.
  • 이들은 주로 데이터베이스 테이블에 매핑되어 지속성을 가지며, 비즈니스 로직을 포함할 수 있다.

🌊 Domain vs Entity

  • Domain은 비즈니스 영역을 추상적으로 나타내는 개념이고, Entity는 Domain 내에서 실제 개별 객체개념을 나타낸다.
  • 도메인 예시
    • 전자상거래 시스템에서의 주문 관리, 상품 관리, 고객 관리 등이 도메인이 될 수 있다.
  • 엔티티 예시
    • ‘주문’ 도메인에서 ‘주문(Order)’ 엔티티, ‘고객’ 엔티티, ‘상품’ 엔티티 등이 될 수 있다.

0개의 댓글