[DDD] 리포지터리와 모델 구현 -8 / 스프링 데이터 JPA를 이용한 조회 기능 - 1
·
📚 개발자의 서재/도메인 주도 개발 시작하기
해당 포스팅은 최범균 작가님의 도메인 주도 개발 시작하기 (P.170~177)를 읽고 정리한 글입니다. 도메인 구현과 DIP아래 리포지토리는 DIP 원칙을 어기고 있다. 먼저 엔티티는 구현 기술인 JPA에 특화된 @Entity, @Table, @Id, Column 등의 애너테이션을 사용하고 있다. DIP에 따르면 @Entity, @Table은 구현 기술에 속하므로 Article과 같은 도메인 모델은 구현 기술인 JPA에 의존하면 안 된다.@Entity@Table(name = "article")@SecondaryTable( name = "article_content", pkJoinColumns = @PrimaryKeyJoinColumn(name = "id"))public class Article{ ..
[DDD] 아키텍처 개요 -4
·
📚 개발자의 서재/도메인 주도 개발 시작하기
해당 포스팅은 최범균 작가님의 도메인 주도 개발 시작하기 (P.88~93)를 읽고 정리한 글입니다. 요청 처리 흐름사용자 입장에서 봤을 때 소프트웨어는 기능을 제공한다. 사용자가 애플리케이션에 기능 실행을 요청하면 그 요청을 처음 받는 영역은 표현 영역이다. 표형 영역은 사용자가 전송한 데이터 형식이 올바른지 검사하고 문제가 없다면 데이터를 이용해서 응용 서비스에 기능 실행을 위임한다. 이때 표현 영역은 사용자가 전송한 데이터를 응용 서비스가 요구하는 형식으로 변환해서 전달한다. 응용 서비스는 도메인 모델을 이용해서 기능을 구현한다. 기능 구현에 필요한 도메인 객체를 리포지터리에서 가져와 실행하거나 신규 도메인 객체를 생성해서 리포지터리에 저장한다.인프라스트럭처 개요인프라스트럭처는 표현 영역, 응용 영..
[DDD] 아키텍처 개요 -2
·
📚 개발자의 서재/도메인 주도 개발 시작하기
해당 포스팅은 최범균 작가님의 도메인 주도 개발 시작하기 (P.70~79)를 읽고 정리한 글입니다. DIP고수준 모듈은 의미 있는 단일 기능을 제공하는 모듈로 기능을 구현하려면 여러 하위 기능이 필요하다. 저수준 모듈은 하위 기능을 실제로 구현한 것이다. 고수준 모듈이 제대로 동작하려면 저수준 모듈을 사용해야 한다. 그런데 고수준 모듈이 저수준 모듈을 사용하면 구현 변경과 테스트가 어렵다는 문제가 발생한다. DIP는 이 문제를 해결하기 위해 저수준 모듈이 고수준 모듈에 의존하도록 바꾼다. 고수준 모듈을 구현하려면 저수준 모듈을 사용해야 하는데, 반대로 저수준 모듈이 고수준 모듈에 의존하도록 하려면 어떻게 해야 할까? 비밀은 추상화한 인터페이스에 있다. DIP를 적용하게 되면 아래와 같은 구조가 된다...
[DDD] 아키텍처 개요 -1
·
📚 개발자의 서재/도메인 주도 개발 시작하기
해당 포스팅은 최범균 작가님의 도메인 주도 개발 시작하기 (P.62~69)를 읽고 정리한 글입니다. 네 개의 영역'표현', '응용', '도메인', '인프라스트럭처'는 아키텍처를 설계할 때 출현하는 네 가지 영역이다. 표현 영역(또는 UI 영역)은 사용자의 요청을 받아 응용 영역에 전달하고 응용 영역의 처리 결과를 다시 사용자에게 보여주는 역할을 한다. 웹 어플리케이션을 개발할 때 많이 사용하는 스프링 MVC 프레임워크가 표현 영역을 위한 기술에 해당한다. 웹 어플리케이션의 표현 영역은 HTTP 요청을 응용 영역이 필요로 하는 형식으로 변환해서 응용 영역에 전달하고 응용 영역의 응답을 HTTP 응답으로 변환하여 전송한다. 응용 영역은 시스템이 사용자에게 제공해야 할 기능을 구현한다. 응용 영역은 도메인 ..