3.1 애그리거트
모델을 이해하는 데 도움을 준다.
일관성을 관리하는 기준이 된다.
일반적으로 애그리거트에는 하나의 엔티티 객체가 있다.
3.2 애그리거트 루트
애그리거트의 일관성을 관리하기 위해 애그리거트 전체를 관리할 주체
도메인 규칙과 일관성을 담당한다
애그리거트 루트의 기능은
애그리거트 내부의 다른 객체 (vo 등)를 조합해서 기능을 완성한다.
vo는 불변으로 구현하고 vo의 (상태변경) 기능을 외부에서 실행할 수 없도록 제약하자
트랜잭션이 담당하는 범위로 삼는다.
한 트랜잭션에서 한 개의 애그리거트를 변경하는 것이 디폴트
3.3 리포지토리와 애그리거트
리포지터리는 애그리거트 단위로 존재한다.
데이터 일관성을 위해!
참고) - 유영모 -
애그리게잇 하나에 리파지토리 하나
보통 다음의 두 메서드를 기본으로 제공한다.
save
findById
3.4 ID를 이용한 애그리거트 참조
애그리거트에서 다른 애그리거트를 참조한다는 것은 다른 애그리거트의 루트를 참조한다는 것과 같다.
애그리거트를 참조하는 두가지 방식
직접 참조
id를 이용한 간접 참조