Chapter 1. 도메인 모델 시작하기
1.1 도메인이란?
1.2 도메인 전문가와 개발자 간 지식 공유
1.3 도메인 모델
1.4 도메인 모델 패턴
1.5 도메인 모델 도출
1.6 엔티티와 밸류
1.6.1 엔티티
1.6.2 엔티티의 식별자 생성
1.6.3 밸류 타입
1.6.4 엔티티 식별자와 밸류 타입
1.6.5 도메인 모델에 set 메서드 넣지 않기
1.7 도메인 용어와 유비쿼터스 언어
Chapter 2. 아키텍처 개요
2.1 네 개의 영역
2.2 계층 구조 아키텍처
2.3 DIP
2.3.1 DIP 주의사항
2.3.2 DIP와 아키텍처
2.4 도메인 영역의 주요 구성요소
2.4.1 엔티티와 밸류
2.4.2 애그리거트
2.4.3 리포지터리
2.5 요청 처리 흐름
2.6 인프라스트럭처 개요
2.7 모듈 구성
Chapter 3. 애그리거트
3.1 애그리거트
3.2 애그리거트 루트
3.2.1 도메인 규칙과 일관성
3.2.2 애그리거트 루트의 기능 구현
3.2.3 트랜잭션 범위
3.3 리포지터리와 애그리거트
3.4 ID를 이용한 애그리거트 참조
3.4.1 ID를 이용한 참조와 조회 성능
3.5 애그리거트 간 집합 연관
3.6 애그리거트를 팩토리로 사용하기
Chapter 4. 리포지터리와 모델 구현(JPA 중심
4.1 JPA를 이용한 리포지터리 구현
4.1.1 모듈 위치
4.1.2 리포지터리 기본 기능 구현
4.2 스프링 데이터 JPA를 이용한 리포지터리 구현
4.3 매핑 구현
4.3.1 엔티티와 밸류 기본 매핑 구현
4.3.2 기본 생성자
4.3.3 필드 접근 방식 사용
4.3.4 AttributeConverter를 이용한 밸류 매핑 처리
4.3.5 밸류 컬렉션: 별도 테이블 매핑
4.3.6 밸류 컬렉션: 한 개 칼럼 매핑
4.3.7 밸류를 이용한 ID 매핑
4.3.8 별도 테이블에 저장하는 밸류 매핑
4.3.9 밸류 컬렉션을 @Entity로 매핑하기
★ 다루는 내용
도메인 모델의 이해, 엔티티와 밸류의 개념
아키텍처의 주요 영역 구성요소와 DIP 패턴
애그리거트, 리포지터리 등 DDD 주요 패턴의 이해와 구현 방법
응용 서비스와 표현 영역을 연동하는 방법
도메인 서비스의 필요성과 구현 방법
도메인 모델의 트랜잭션 충돌을 처리하는 방법
도메인 이벤트를 이용하여 시스템의 결합도를 낮추고 기능을 확장하는 방법
CQRS의 개념과 명령 모델/조회 모델을 나누는 방법
★ 대상 독자
이 책은 DDD를 처음 접하는 개발자를 위한 책으로 DDD 입문자를 대상으로 한다. DDD 고수가 되는 법을 알려주는 책은 아니다. 이미 DDD 기초를 마스터했다면 다른 책을 통해 DDD의 심오함을 느끼길 바란다. 아직 DDD를 잘 모르지만 관심이 있다면 이 책을 통해 DDD에 대한 호기심을 채울 수 있을 것이다.
★ 예제 소스
예제 코드는 메이븐, 자바 17, 스프링 부트, JPA(하이버네이트, 타임리프, MySQL을 이용해서 작성했다.