본문 바로가기

programming/DDD4

[DDD] 4장 리포지터리와 모델 구현 JPA를 이용한 리포지터리 구현 역시 RDBMS를 사용할 때, ORM 만한 매핑 기술이 없다 자바 ORM 표준인 JPA를 이용해서 리포지터리와 애그리거트를 구현하는 방법에 대해 살펴보자 모듈 위치 라포지터리 인터페이스는 도메인 영역, 리포지터리를 구현한 클래스는 인프라스트럭처 영역에 속한다 4.3.3 필드 접근 방식 이용 엔티티에 프로퍼티를 위해 공개 get/set 메서드를 추가하면 도메인의 의도가 사라지고 객체가 아닌 데이터 기반으로 엔티티를 구현할 가능성이 높아진다 그래서 JPA 매핑 처리를 프로퍼티가 아닌 필드 방식으로 선택하여 불필요한 get/set 메서드를 구현하지 말자 @Entity @Access(AccessType.FIELD) public class Order { @EmbeddedId pri.. 2022. 12. 21.
[DDD] 3장 애그리거트 상위 수준 개념을 이용해서 전체 모델을 정리하면 전반적인 관계를 이해하는 데 도움이 된다 아래 그림을 보면 주문은 회원, 상품, 결제와 관련이 있다는 것을 쉽게 파악할 수 있다 상위 수준 모델을 개별 객체 단위로 다시 그려보자 개념을 파악하기에 더 오랜 시간이 걸리고, 더 많은 코드를 보고 도메인 전문가와 더 많은 대화를 나눠야 비로소 상위 수준에서 모델 간의 관계가 이해되기 시작한다 주요 도베인 요소 간의 관계를 파악하기 어렵다는 것은 코드를 변경하고 확장하는 것이 어려워진다는 것을 의미한다 상위 수준에서 모델이 어떻게 엮여 있는지 알아야 전체 모델을 망가뜨리지 않으면서 추가 요구사항을 모델에 반영할 수 있는데, 세부적인 모델만 이해한 상태로는 코드를 수정하는 것이 꺼려지기 때문에 코드 변경을 최대한 .. 2022. 12. 10.
[DDD] 2장 아키텍처 개요 네 개의 영역 표현, 응용, 도메인, 인프라스트럭처는 아키텍처를 설계할 때 출현하는 전형적인 네 가지 영역이다 표현 영역 네 영역 중 표현(또는 UI영역)은 사용자의 요청을 받아 응용 영역에 전달하고, 응용 영역의 처리 결과를 다시 사용자에게 보여주는 역할을 한다 스프링 MVC 프레임워크가 표현 영역을 위한 기술이다, 표현 영역의 사용자는 웹 브라우저 이용자일 수 있고, REST API를 호출하는 외부 시스템일 수 있다 HTTP 요청을 응용 영역이 필요로 하는 형식으로 변환하여 응용 영역에 전달하고 응용 영역의 응답을 HTTP 응답으로 변환하여 전송한다 예를 들어 웹 브라우저가 보낸 HTTP 요청을 응용 영역이 필요로 하는 형식의 객체 타입으로 변환하고, 응용 영역이 리턴한 결과를 JSON 형식으로 변환.. 2022. 11. 21.
DDD-Light NHN-DDD-Lite@Spring CONTENTS 복잡성과 위키 지식 탐구 구현 https://www.youtube.com/watch?v=TdyOH1xZpT8 복잡성과 위키 기술은 항상 발전하는데 중요한게 뭘까? 왜 복잡해질까? 애플리케이션이 엄청 복잡하기 때문 도메인 자체에 대한 복잡성 사용하는 기술과 도구에 대한 복잡성 위기 일정 driven development ㅋㅋㅋㅋ 빠르고 간단하게 구축 → 오픈하면 새로운 요구사항 → 복잡성 증가 → 가파른 비용 증가, 급격한 생산성 감소 → 위기 → 차세대 개편(개편하면서도 레거시 의존) + 레거시 의존 → 빠르고 간단하게 구축 결국 빠르고 간단하게 맞지 않는 접근법으로 구축하니 문제이다 애플리케이션은 시간이 지날수록 복잡해지고 비용이 급격히 증가한다 → .. 2022. 10. 21.