4. 도메인 객체의 연관 관계를
찾기 위한 첫 번째 진입점은?
리파지토리(Repository)
5. Repository
A mechanism for encapsulating storage, retrieval,
and search behavior which emulates a collection
of objects.
DDD community
(http://dddcommunity.org)
6. 여기서 중요한 점
리파지토리는 Aggregate
단위로 동작합니다
Aggregate: 하나의 단위로 취급할수 있는 객체들의 클러스터
내부 객체들의 도메인 무결성을 관리
14. 컬렉션 지향 리파지토리
•자바의 표준 컬렉션과 유사하게 동작
•ex) HashSet
•객체의 변경을 저장하는 요청이 없음
•객체에 일어난 변화를 추척하는 기능이 필요
•JPA, Hibernate를 사용할 경우 구축이 용이
15. 영속성 지향 리파지토리
•존재하는 객체를 변경할때 마다 save를 호출
•컬렉션 지향 방법이 맞지 않을때 사용
•라이브러리에서 객체의 변화를 추적 기능 제공 않음
•ex) Mybatis, NoSQL ..
•장점: 영속성 라이브러리 변경이 응용계층에 영향을 미치지 않음
16. 리파지토리 vs DAO
DAO Repository
같은점
영속성 메커니즘의 추상적
개념을 제공
영속성 메커니즘의 추상적
개념을 제공
다른점
일반적으로
데이터베이스 테이블에
따라 표현되며, CRUD
인터페이스를 제공
도메인 객체 중심
(컬렉션지향으로 주로 설계)
17. 리파지토리와 모듈
응용 계층 도메인 계층 인프라 계층
Model
<<Interface>>
Repository
Service RepositoryImpl
18. 리파지토리와 트랜잭션
•도메인 계층은 트랙잭션을 관리하기 위한 곳이 아님
•계층 아키텍처에서는 응용 계층이 트랙잭션을 관리
•성능을 위해 단일 트랙잭션에서 여러 Aggregate를
수정하는 것은 피해야 함
19. References
•Eric Evans, Domain Driven Design(이대엽 옮김).
경기도 파주시 문발로 위키북스, 2011.
•Vaughn Vernon, IMPLEMENTING DOMAIN-
DRIVEN DESIGN(윤창석,황예진 옮김). 서울시 양천구
에이콘출판주식회사, 2016
•최범균. DDD START! 도메인 주도 설계 구현과 핵심
개념 익히기. 서울시 마포구 (주)지앤선, 2016.