도메인 주도 개발 시작하기: DDD 핵심 개념 정리부터 구현까지
도서명:도메인 주도 개발 시작하기: DDD 핵심 개념 정리부터 구현까지
저자/출판사:최범균/한빛미디어
쪽수:356쪽
출판일:2022-03-21
ISBN:9791162245385
목차
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로 매핑하기
4.3.10 ID 참조와 조인 테이블을 이용한 단방향 M-N 매핑
4.4 애그리거트 로딩 전략
4.5 애그리거트의 영속성 전파
4.6 식별자 생성 기능
4.7 도메인 구현과 DIP
Chapter 5. 스프링 데이터 JPA를 이용한 조회 기능
5.1 시작에 앞서
5.2 검색을 위한 스펙
5.3 스프링 데이터 JPA를 이용한 스펙 구현
5.4 리포지터리/DAO에서 스펙 사용하기
5.5 스펙 조합
5.6 정렬 지정하기
5.7 페이징 처리하기
5.8 스펙 조합을 위한 스펙 빌더 클래스
5.9 동적 인스턴스 생성
5.10 하이버네이트 @Subselect 사용
Chapter 6. 응용 서비스와 표현 영역
6.1 표현 영역과 응용 영역
6.2 응용 서비스의 역할
6.2.1 도메인 로직 넣지 않기
6.3 응용 서비스의 구현
6.3.1 응용 서비스의 크기
6.3.2 응용 서비스의 인터페이스와 클래스
6.3.3 메서드 파라미터와 값 리턴
6.3.4 표현 영역에 의존하지 않기
6.3.5 트랜잭션 처리
6.4 표현 영역
6.5 값 검증
6.6 권한 검사
6.7 조회 전용 기능과 응용 서비스
Chpater 7. 도메인 서비스
7.1 여러 애그리거트가 필요한 기능
7.2 도메인 서비스
7.2.1 계산 로직과 도메인 서비스
7.2.2 외부 시스템 연동과 도메인 서비스
7.2.3 도메인 서비스의 패키지 위치
7.2.4 도메인 서비스의 인터페이스와 클래스
Chapter 8. 애그리거트 트랜잭션 관리
8.1 애그리거트와 트랜잭션
8.2 선점 잠금
8.2.1 선점 잠금과 교착 상태
8.3 비선점 잠금
8.3.1 강제 버전 증가
8.4 오프라인 선점 잠금
8.4.1 오프라인 선점 잠금을 위한 LockManager 인터페이스와 관련 클래스
8.4.2 DB를 이용한 LockManager 구현
Chapter 9. 도메인 모델과 바운디드 컨텍스트
9.1 도메인 모델과 경계
9.2 바운디드 컨텍스트
9.3 바운디드 컨텍스트 구현
9.4 바운디드 컨텍스트 간 통합
9.5 바운디드 컨텍스트 간 관계
9.6 컨텍스트 맵
Chapter 10. 이벤트
10.1 시스템 간 강결합 문제
10.2 이벤트 개요
10.2.1 이벤트 관련 구성요소
10.2.2 이벤트의 구성
10.2.3 이벤트 용도
10.2.4 이벤트 장점
10.3 이벤트, 핸들러, 디스패처 구현
10.3.1 이벤트 클래스
10.3.2 Events 클래스와 ApplicationEventPublisher
10.3.3 이벤트 발생과 이벤트 핸들러
10.3.4 흐름 정리
10.4 동기 이벤트 처리 문제
10.5 비동기 이벤트 처리
10.5.1 로컬 핸들러 비동기 실행
10.5.2 메시징 시스템을 이용한 비동기 구현
10.5.3 이벤트 저장소를 이용한 비동기 처리
10.6 이벤트 적용 시 추가 고려 사항
10.6.1 이벤트 처리와 DB 트랜잭션 고려
Chapter 11. CQRS
11.1 단일 모델의 단점
11.2 CQRS
11.2.1 웹과 CQRS
11.2.2 CQRS 장단점