스터디/DDD 스터디(11)
-
스프링 데이터 JPA를 이용한 조회 기능
# 시작에 앞서 CQRS : 명령 모델과 조회 모델을 분리하는 패턴. 상테(데이터) 변경 기능 구현시에는 명령 모델, 데이터를 보여주는 기능을 구현할 때는 조회 모델 사용 # 검색을 위한 스펙 스팩 Specification : 검색 조건을 다양하게 조합해야 할 때 사용할 수 있는 것 agg는 애그리거트 루트, agg는 검색 결과로 리턴할 데이터 객체가 됨. 만약 리포지터리가 메모리에 모든 애그리거트를 보관하고 있다면 다음과 같이 사용 가능하나, 실제로는 모든 데이터를 메모리에 저장을 못하기에 사실상 위와 같이 사용 불가능 실제 스펙은 사용하는 기술에 맞춰 구현하게 됨 # 스프링 데이터 JPA를 이용한 스펙 구현 JPA 크리테리아 API를 같이 이용 스펙은 and 혹은 or, where 등으로 조합이 가능..
2023.08.05 -
리포지터리와 모델 구현
매핑 구현 - 애그리거트와 JPA 매핑을 위한 기본 규칙 - 애그리거트 루트는 엔티티이므로 @Entitiy로 매핑 설정 - 벨류는 @Embeddedable로 매핑 설정 - 벨류 타입 프로퍼티는 @Embedded로 매핑 설정 - 타 애그리거트는 ID로 참조 AttributeConverter - int, long, String, LocalDate 같은 타입은 DB 테이블에 한 개의 컬럼에 매핑됨. - 이와 비슷하게 벨로타입의 프로퍼티를 한 개의 컬럼에 매핑해야할 때도 있음. - AttributeConverter을 통해 벨류 타입과 칼럼 데이터 간의 변환 처리 가능 - 벨류 컬렉션을 별도 테이블로 매핑시에는 @ElementCollection과 @CollectionTable을 함께 사용 - List에 자체 인덱..
2023.07.28 -
애그리거트
애그리거트 - 도메인 객체 모델이 복잡해지면 전반적인 구조나 큰 수준에서 도메인 간 관계를 파악하기 어려워짐. -> 코드 변경/확장 난이도 상승 - 애그리거트를 통해 복잡한 도메인을 이해하고 관리하기 쉬운 단위로 만들 수 있음. - 애그리거트를 통해 관련 객체를 하나의 군으로 묶을 수 있고, 상위 수준에서 도메인 모델 간 관계 파악 가능 - 애그리거트는 모델을 이해하는 데 도움을 줄 뿐 아니라 일관성 관리 기준도 됨. - 한 애그리거트에 속한 객체는 유사하거나 동일한 라이프 사이클 가짐 - 애그리거트는 경계를 가짐 -> 한 애그리거트에 속한 객체는 다른 애그리거트에 속하지 않음 - 애그리거트 경계를 설정할 때 기본이 되는 것은 도메인 규칙과 요구사항 - 도메인 규칙에 따라 함께 생성되는 구성 요소는 한 ..
2023.07.19 -
도메인 주도 개발 시작하기
네 개의 영역 표현 영역 사용자 요청을 받아 응용 영역에 전달, 응용 영역의 처리 결과를 다시 사용자에게 전달 응용 영역 시스템이 사용자에게 제공해야할 기능을 구현 응용 서비스는 로직을 직접 수행하기보다는 도메인 모델에 로직 수행을 위임 도메인 모델 도메인 핵심 로직을 구현 인프라스트럭처 영역 구현 기술에 대한 것을 다룸 DB 연동, 메시징 큐 송수신 계층 구조 아키텍처 계층 구조는 상위 계층에서 하위 계층으로 의존만 존재 하위 계층은 상위 계층에 의존하지 않음 구현의 편리함을 위해 계층 구조를 유연하게 적용하기도 함 인프라 스트럭처에 의존하면 test와 기능 확장에 어려움을 가짐 : DIP로 해결 DIP 상위 모듈은 하위 모듈에 의존해서는 안 됨. 변하지 않는 것에 의존 -> 추상화에 의존 -> 인터페..
2023.07.11 -
도메인 모델 시작하기
도메인이란? - 도메인 : SW로 해결하고자 하는 문제 영역 - 도메인은 여러 하위 도메인으로 구성됨. - 한 하위 도메인은 다른 하위 도메인과 연동하여 완전한 기능 제공 - 특정 도메인 위한 SW라고 해서 도메인이 제공해야 할 모든 기능을 직접 구현하지 않음. - 일부 기능은 자체 시스템으로 구현, 나머지 기능은 외부 시스템 사용 EX) 온라인 쇼핑몰은 외부 배송 업체의 시스템 사용. 필요한 기능만 일부 연동 도메인 전문가와 개발자 간 지식 공유 - 요구사항은 첫 단추와 같음. 코딩에 앞서 요구사항을 올바르게 이해하는 것이 중요. - 개발자와 전문가가 직접 대화하는게 베스트 - 이해관계자와 개발자도 도메인 지식을 갖춰야 - 잘못된 값이 들어가면 잘못된 결과가 나옴. 요구사항도 마찬가지 - 관련자가 요구..
2023.07.06