본문 바로가기
어딘가에 맞춰질 퍼즐 조각들

DDD(Domain Driven Design) & 애그리거트(Aggregate)

by 팡펑퐁 2022. 11. 22.
728x90

DDD(Domain Driven Design)

  • 도메인 위주의 설계 기법을 의미한다.

 

도메인(Domain)

  • 현실세계에서 접할 수 있는 비지니스적인 업무 영역을 뜻한다.
  • 도메인 지식(Domain Knowledge)는 배달 애플리케이션으로 예를 들면 고객이 음식을 주문하는 과정, 주문받은 음식을 처리하는 과정, 배달하는 과정 등을 말한다.
  • 도메인 지식을 자세히 알수록 보다 높은 퀄리티의 애플리케이션을 만들 수 있다.

애그리거트(Aggregate)

  • 비슷한 범주의 연관된 업무들을 하나의 그룹으로 묶어놓은 것
  • 그 중 대표적인 도메인을 애그리거트 루트(Aggregate Root)라고 한다.
  • 애그리거트 루트는 다른 도메인들과 직관접적으로 연관이 되어 있는 도메인이 선정된다.

애그리거트 객체 매핑 규칙

  • 모든 엔티티 객체의 상태는 애그리거트 루트를 통해서만 변경할 수 있다.
  • 하나의 동일한 애그리거트 내에서는 엔티티 간에 객체로 참조한다.
  • 애그리거트 루트 간 참조는 ID로 참조한다.
    • 1:N 관계일 때는 AggregateReference 클래스를 사용하여 감싸주는 방법을 통해 객체 참조가 아닌 ID참조가 이루어진다.
    • N:N 관계일 때는 참조할 테이블에 해당되는 클래스의 @ID 필드를 맴버 변수로 가지는 별도의 참조 클래스를 사용한다.
728x90