14. 도메인 모델 VS DTO
도메인 모델
- 모델링 된 결과
- 영속화 대상
- 리치 도메인 모델은 중량 객체
DTO(
- 계층간 데이터 전송용 객체
- 주고 받는 쌍방 간의 관심사 반영
- 도메인 로직 은익
- 과거 값 객체(
애플리케이션 서비스
UI
요청
반환
도메인
DTO
전송 객체 생성기
DTO
참조
참조
15. 도메인 모델: 저장소
도메인 모델이 인프라에 의존하지 않도록 저장소 추상화
데이터 검색/저장 작업을 일반 자료구조와 유사하게 처리
스프링의
데이터측
인프라
도메인
모델
서비스
App 서비스
저장소 인터페이스
저장소 클래스
도메인
객체
도메인 모델
인프라
16. 도메인 모델: 인프라 서비스
도메인 모델이 인프라에 의존하지 않도록 외부 연동 추상화
데이터측
인프라
도메인
모델
서비스
App 서비스인프라 서비스
인터페이스
인프라 서비스
클래스
도메인
객체
도메인 모델
인프라
17. 데이터 접근: 테이블 데이터 GW
일반적으로 DAO
DB
단일 테이블에 대한 모든 SQL
무상태 객체
find(int)
findWithLastName(String)
update(…)
insert(…)
delete(int)
PersonGateway
18. 데이터 접근: 행 데이터 GW
데이터와 DB
DB
데이터와 DB
검색은 Finder
update(…)
insert(…)
delete(int)
PersonGateway
find(int)
findWithLastName(String)
PersonFinder
lastname
firstname
numberOfDependents
19. 데이터 접근: 액티브 레코드
행 데이터 게이트웨이 + 도메인 로직
update(…)
insert(…)
delete(int)
isValid()
getFullName()
Person
find(int)
findWithLastName(String)
PersonFinder
lastname
firstname
numberOfDependents
20. 데이터 접근: 데이터 매퍼
도메인 객체와 DB
도메인 객체 그래프와 DB
isValid()
getFullName()
Person
lastname
firstname
numberOfDependents
PersonMapper
insert()
update()
delte()