3210439.log
로그인
3210439.log
로그인
도메인 주도 개발 시작하기 애그리거트 ch3
김종완
·
2023년 10월 29일
팔로우
1
DDD
도메인 주도 개발 시작하기
1
도메인 주도 개발 시작하기
목록 보기
3/11
애그리거트
애그리거트
정의
관련된 객체들을 모아 하나의 단위로 취급하는 개념이다.
논리적으로 관련된 객체들을 그룹화하여 하나의 묶음으로 다룬다.
쉽게 말해, 여러 개의 객체를 묶어 하나의 큰 객체로 다루는 것이다.
장점
상위 수준에서 모델을 정리하면 도메인 모델의 복잡한 관계를 이해하는 데 도움이 된다.
유지 보수성 및 확장성을 높인다.
데이터베이스 트랜잭션 처리를 단순화 하고, 일관성을 유지한다.
예시
주문 애그리거트: 주문, 주문 항목, 배송 정보
고객 애그리거트: 고객, 주소, 계좌 정보
제품 애그리거트: 제품, 재고, 가격
에그리거트 루트
정의
애그리거트 루트는 애그리거트를 대표하는 객체이다.
애그리거트 루트는 애그리거트의 모든 객체에 대한 참조를 가지고 있다.
에그리거트의 일관성을 책임진다.
역할
애그리거트의 경계를 정의한다. 애그리거트 루트는 애그리거트에 속한 객체와 속하지 않은 객체를 구분한다.
애그리거트의 일관성을 유지한다. 애그리거트 루트는 애그리거트의 모든 객체가 애그리거트의 일관성 규칙을 준수하도록 보장한다.
애그리거트 루트는 애그리거트 내부의 다른 객체를 조합해서 기능을 완성한다.
예시
주문 애그리거트의 경우, 주문 객체가 애그리거트 루트가 될 수 있다. 주문 객체는 주문 항목, 배송 정보 등의 객체에 대한 참조를 가지고 있다.
고객 애그리거트의 경우, 고객 객체가 애그리거트 루트가 될 수 있다. 고객 객체는 주소, 계좌 정보 등의 객체에 대한 참조를 가지고 있다.
제품 애그리거트의 경우, 제품 객체가 애그리거트 루트가 될 수 있다. 제품 객체는 재고 정보, 가격 정보 등의 객체에 대한 참조를 가지고 있다.
애그리거트와 리포지터리
정의
애그리거트를 저장하고 조회하는 역할을 하는 인터페이스
구현
어떤 기술로 리포지토리를 구현하느냐에 따라 애그리거트 구현도 영향을 받는다.
주의사항
애그리거트의 상태가 변경되면 모든 변경을 원자적으로 저장소에 반영해야 한다.
김종완
개발에 재미를 느끼며 꾸준히 성장하는 개발자 김종완 입니다.
팔로우
이전 포스트
도메인 주도 개발 시작하기 아키텍처 개요 ch2
다음 포스트
도메인 주도 개발 시작하기 리포지터리와 모델 구현 ch4
0개의 댓글
댓글 작성