DDD(3)
-
도메인 주도 설계 - 리포지토리의 조회 기능
이 장에서 다룰 내용 스펙 동적 인스턴스와 @Subselect 검색을 위한 스펙 애그리거트를 찾을 때 식별자를 이용하는 것이 기본. 다양한 검색 조건으로 애그리거트를 찾아야한다면? 스펙 1 2 3 public interface Specification { boolean isSatisfiedBy(T agg); } Colored by Color Scripter cs 스펙은 애그리거트가 특정 조건을 충족하는지 여부를 검사하는 것. 애그리거트가 조건에 맞으면 true를, 틀리면 false를 리턴합니다. 예) OrdererSpec - 스펙 정의 1 2 3 4 5 6 7 8 9 10 11 12 public class OrdererSpec implements Specification { private String o..
2022.05.09 -
도메인 주도 설계 JPA를 이용한 리포지터리 구현
도메인 주도 설계에서 애그리거트를 어떤 저장소에 저장하느냐에 따라 리포지터리를 구현하는 방법이 다릅니다. 이번에는 JPA를 중심으로 리포지터리를 구현하는 방법에 대해 알아보는 시간입니다. 모듈 위치 DIP에 따라서 리포지터리 인터페이스는 도메인 영역에 속하고, 리포지터리를 구현한 클래스는 인프라 영역에 속합니다. 리포지터리 기본 기능 구현 리포지터리의 기본 기능은 다음 두 가지 입니다. 아이디로 애그리거트 조회 애그리거트 저장 1 2 3 4 public interface OrderRepository { Order findById(OrderNo id); void save(Order order); } Colored by Color Scripter cs 1 2 3 4 5 6 7 8 9 10 11 12 13 1..
2022.03.17 -
도메인 주도 설계란? DDD란?
도메인 주도 설계(Domain-Driven Design)는 왜 필요할까요? 도메인 주도 설계란? 말 그대로 도메인을 중심으로 설계해 나가는 방법입니다. 그럼 도메인이란 무엇일까요? 소프트웨어로 해결해야할 문제의 영역입니다. 예를 들어 고객이 원하는 상품을 어떻게 잘 제공할 것인가? 의 대한 문제는 커머스라는 도메인이 있습니다. 커머스 도메인의 하위 도메인으로 판매자가 무엇을 판매할 것인가? 의 대한 문제는 상품이라는 도메인이 있고, 공통된 상품에 대해서 어떻게 공통 정보를 제공할 것인가? 의 대한 문제는 카탈로그 도메인이 있습니다. 그 밖에 판매자, 사용자, 카테고리, 주문, 배송 등 많은 도메인이 존재합니다. 소프트웨어의 존재에 대한 가치 소프트웨어의 본질은 해당 소프트웨어의 사용자를 위해 도메인에 관..
2021.11.29