본문 바로가기

Back-End/도메인 주도 개발 시작하기21

[DDD] 도메인 주도 개발 시작하기_Ch5 Chapter 5 스프링 데이터 JPA를 이용한 조회 기능 5.1 시작에 앞서 ∘ CQRS : 명령 모델과 조회 모델을 분리하는 패턴 ∘ 명령 모델 : 상태를 변경하는 기능 구현 ∘ 조회 모델 : 데이터를 조회하는 기능 ∘ 앞 부분에서 봤던 도메인 모델은 명령 모델로 주로 사용됨 ∘ 정렬, 페이징, 검색 조건 지정과 같은 기능은 주문 목록, 상품 상세와 같은 조회 기능에 사용됨 5.2 검색을 위한 스펙 ∘ 검색 조건의 조합마다 find를 정의하는 것은 좋지 않음 ∘ 스펙 : 검색 조건을 다양하게 조합할 때 사용, 애그리거트가 특정 조건을 충족하는지를 검사할 때 사용하는 인터페이스 ∘ 스펙을 리포지터리에 사용하는지, DAO에 사용하는지에 따라 검사 대상이 되는 객체가 다름 ∘ isSatisfiedBy() .. 2023. 3. 23.
[DDD] 도메인 주도 개발 시작하기_Ch4 Chapter 4 리포지터리와 모델 구현 4.1 JPA를 이용한 리포지터리 구현 ∘ 자바의 ORM 표준인 JPA를 이용해서 리포지터리와 애그리거트를 구현하는 방법 4.1.1 모듈 위치 ∘ 리포지터리 인터페이스는 애그리거트와 같이 도메인 영역에 속함 ∘ 리포지터리를 구현한 클래스는 인프라스트럭처 영역에 속함 4.1.2 리포지터리 기본 기능 구현 ∘ 리포지터리가 제공하는 기본 기능 - ID로 애그리거트 조회하기 : findBy프로퍼티이름(프로퍼티 값) - 애그리거트 저장하기 : save() ∘ JPA는 트랙잭션 범위에서 변경한 데이터를 자동으로 DB에 반영 ∘ 애그리거트를 삭제하는 기능을 만들 수 있음 4.2 스프링 데이터 JPA를 이용한 리포지터리 구현 ∘ 스프링 데이터 JPA는 지정한 규칙에 맞게 리포지.. 2023. 3. 17.
[DDD] 도메인 주도 개발 시작하기_Ch3 Chapter 3 애그리거트 3.1 애그리거트 ∘ 상위 수준에서 모델을 정리한 것이 관계를 이해하기 더 쉬움 ∘ ERD : Entity Relationship Diagram ∘ 후에 코드 변경을 하기 위해서는 도메인 모델의 관계 파악이 바탕이 되어야 함 ∘ 애그리거트 : 모델을 상위 수준에서 볼 수 있는 방법. 관련된 객체를 군으로 묶음. ∘ 한 애그리거트에 속한 객체는 유사하거나 동일한 라이프 사이클을 가짐 ∘ 한 각체는 하나의 애그리거트에만 속할 수 있음 ∘ 도메인 규칙과 요구사항에 따가 경계 설정 3.2 애그리거트 루트 ∘ 애그리거트의 루트 엔티티 : 애그리거트에 속한 모든 객체가 일관된 상태를 유지하도록 애그리거트 전체를 관리 3.2.1 도메인 규칙과 일관성 ∘ 애그리거트 루트는 애그리거트의 일관.. 2023. 3. 17.
[DDD] 도메인 주도 개발 시작하기_Ch2 Chapter 2 아키텍처 개요 2.1 네 개의 영역 ∘ 아키텍처를 설계할 때 표현, 응용, 도메인, 인프라스트럭처가 필요 - 표현 영역(UI 영역) : 사용자의 요청을 받아 응용 영역에 전달함, 응용 영역의 처리 결과를 사용자에게 보여줌 - 응용 영역 : 시스템이 사용자에게 제공해야 할 기능을 구현함, 도메인 영역의 도메인 모델 사용 - 도메인 영역 : 도메인 모델을 구현함 - 인프라스트럭터 영역 : 기술의 실제 구현 2.2 계층 구조 아키텍처 ∘ 계층 구조의 아키텍처가 많이 사용됨. 계층 구조에서는 상위 계층에서 하위 계층으로의 의존만 존재하고 하위 계층은 상위 계층에 의존하지 않음 ∘ 인프라스트럭처에 의존하면 ’많은 것을 만들고 나서야 테스트를 해볼 수 있다는 어려움‘, ’기능 확장의 어려움‘이 발.. 2023. 3. 11.
[DDD] 도메인 주도 개발 시작하기_Ch1 Chapter 1 도메인 모델 시작하기 1.1 도메인이란? ∘ 도메인 : 소프트웨어로 해결하고자 하는 문제 영역 ∘ 한 도메인은 하위 도메인으로 나눌 수 있음 ∘ 한 하위 도메인은 다른 하위 도메인과 연동해서 완전한 기능 제공 ∘ 소프트웨어가 도메인의 모든 기능을 제공하는 것은 아님. 외부 시스템과 기능 연동해서 제공하기도 함. ∘ 상황을 고려해서 하위 도메인이 구성됨 1.2 도메인 전문가와 개발자 간 지식 공유 ∘ 개발자가 기능 구현을 위해 코드를 작성할 때 맨 첫 단계는 요구사항 분석 ∘ 요구사항을 올바르게 이해하기 위해서 개발자는 전문가와 직접 대화해야 함 1.3 도메인 모델 ∘ 도메인 모델 : 특정 도메인을 개념적으로 표현한 것. 도메인 자체를 이해하기 위한 개념 모델. ∘ 개념 모델인 도메인 모.. 2023. 3. 11.