1. DDD(Domain Driven Design)

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

 1) 도메인(Domain)

  • 애플리케이션 개발에서 흔하게 사용하는 도메인이란 용어는 주로 비즈니스적인 어떤 업무 영역과 관련이 있다 
  • 애플리케이션 개발에서 필요한 업무 로직에 대한 지식을 도메인 지식(Domain Knowledge)이라고 한다
  • 도메인 지식이 많을수록 서비스 계층에서 비즈니스 로직으로 구현해야 하는 것들을 퀄리티가 높게 표현할 수 있다

 2) 애그리거트(Aggregate)

  • 비슷한 업무 도메인들의 묶음이다
  • 비슷한 범주의 연관된 업무들을 하나로 묶어 그룹화한 것이다

 3) 애그리거트 루트(Aggregate Root)

  • 하나의 애그리거트를 대표하는 도메인을 말한다
  • 애그리거트 루트(Aggregate Root)의 기본키 정보를 다른 도메인들이 외래키 형태로 가지고 있다

 4) 애그리거트 간의 관계

  • 하나의 애그리거트 루트는 N개의 애거리거트 루트와 관계를 가질 수 있다
  • N개의 도메인은 하나의 애거리거트 루트와 관계를 가질 수 있다
  • 애거리거트 간의 관계를 1:N , N:1 , 1:1로 구분할 수 있다

※ 데이터베이스 테이블 간의 관계는 외래키를 통해 맺어지지만

    클래스끼리 관계는 객체의 참조를 통해 맺어진다

 

※ 참조 링크

 https://martinfowler.com/bliki/DDD_Aggregate.html

 

bliki: DDD_Aggregate

A pattern from Domain-Driven Design describing a cluster of domain objects that can be treated as a single unit for persistant storage and transactions.

martinfowler.com

https://www.alibabacloud.com/blog/an-in-depth-understanding-of-aggregation-in-domain-driven-design_598034

 

An In-Depth Understanding of Aggregation in Domain-Driven Design

This article discusses the definition, value, and practices of aggregation in domain-driven design (DDD)

www.alibabacloud.com

 

+ Recent posts