kingbbode / ddd-java

Domain Driven Design

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Domain Driven Design 연습하기

최범균님의 DDD Start 책을 보고 감명 받아 시작한 프로젝트
(개인적으로 조영호님의 객체지향의 사실과 오해를 먼저 읽고 다음으로 읽으면 효과가 더 좋은것 같다.
마치 시리즈로 이어지는 듯한 경험을 얻게 된다. 코드를 바라보는 시각이 달라짐을 느낀다.)

3장 - 애그리거트

  • 애그리거트 (객체 군)

    • 일종의 객체들의 집합체
    • 객체가 점점더 세분화 됨에 따라 너무나 복잡해져서 이를 쉬운 단위로 만들기 위해 상위 수준의 모델로 재 추상화 한 단위
    • 주문, 배송추적, 배송정보, 주소, 수취인, 주문자, 주문 목록 등은 모두 각각의 객체지만 주문 이란 애그리거트로 묶을 수 있다.
    • 한 애그리거트에 속한 객체들은 유사 혹은 동일한 라이프 사이클을 가진다.
    • 여기서 주문의 경우 애그리거트의 루트 엔티티라고 한다.
  • 루트 엔티티 사용시 유의해야할 점

    • setXXX 메소드는 public 스코프로 생성하지 않는다 (!?)
    • value 타입은 불변으로 구현한다.
  • 애그리거트간의 관계는 객체 참조가 아닌 ID 참조를 한다.

    • 즉, 각각의 애그리거트간에는 애그리거트의 key값만 가진다.
    • 단, 애그리거트 내부 엔티티간의 관계는 객체 참조를 한다.
    • 이렇게 하는 근본적인 이유는 한 애그리거트에서 다른 애그리거트를 수정하는 문제를 원천 방지하기 위함이다.

About

Domain Driven Design


Languages

Language:Java 100.0%