전체 글(76)
-
[DDD] Chap 04 리포지터리와 JPA중심 모델 구현
리포지터리는 애그리거트의 저장소를 말하며, 애그리거트를 어떤 DBMS를 사용하여 저장하냐에 따라 리포지터리 구현 방법이 다릅니다. RDBMS와 객체 기반 도메인 모델을 매핑하는데 사용하는 대표적인 ORM기술로서 JPA가 있습니다. 이번 장에선 JPA 중심으로 리포지터리 구현과 엔티티, 밸류, 애그리거트 매핑 구현 방법에 대해서 알아보겠습니다. 모듈 위치 2장에서 살펴보았듯이, Repository 인터페이스는 도메인 영역에 속하고 Repository를 구현하는 구현 클래스는 Infra Structure 영역에 존재합니다. 리포지터리의 기본 기능 ID로 애그리거트 조회하기 애그리거트 저장하기 Repository 인터페이스는 애그리거트 루트를 기준으로 작성합니다. public interface OrderRep..
2021.08.21 -
[DDD] Chap 03 Aggregate
이번 장에선 애그리거트 개요, 애그리거트 설계 원칙, 애그리거트간 참조 방식에 대해서 정리해보겠습니다. 애그리거트란? 애그리거트는 특정 도메인에 관련된 엔티티와 밸류 객체들의 묶음입니다. 프로그래밍 세계에선 항상 극단적으로 생각해볼 필요가 있습니다. 특정 시스템에 구성된 객체가 10억 개가 있다면 개발자가 미로같이 얽힌 시스템을 이해하기 매우 어려울겁니다. 따라서 애그리거트 단위로 도메인을 관리하면 객체 수준이 아닌 상위 수준에서 시스템을 바라볼 수 있어서 개발자가 시스템을 이해하기 쉽게 됩니다. 애그리거트 설계 원칙 한 애그리거트에 속한 객체는 동일한 라이프 사이클를 가짐 애그리거트 루트를 통한 일관성 보장 ID를 통해 애그리거트간 참조 애그리거트는 동일한 라이프 사이클을 가진 객체들끼리 묶는 것을 원..
2021.08.15 -
[DDD] Chap 02 아키텍처 개요
이번 장에선 도메인 아키텍처, DIP, 도메인 모델 구성에 대해서 알아보겠습니다. 표현 영역 클라이언트의 받은 HTTP 요청을 응용 계층에 필요로 하는 형식으로 파싱해서 전송합니다. 반대로 응용 서비스가 리턴한 결과를 JSON 형식으로 파싱해서 브라우저로 전달합니다. Controller의 역할을 수행하는 영역입니다. 응용 계층 도메인 모델을 이용해서 사용자에게 제공할 기능을 구현합니다. 단, 로직 수행은 도메인 모델에게 위임합니다. Service의 역할을 수행합니다. 도메인 계층 도메인의 핵심 로직을 구현한 영역입니다. 인프라 스트럭처 계층 RDBMS 연동, SMTP, Kafka 등 구현 기술의 실제 구현을 다루는 영역입니다. Repository, DAO의 역할을 수행합니다. 각 계층은 상위 계층이 하위..
2021.08.14 -
[DDD] Chap 01 도메인 모델 시작
도메인이란? 도메인이란 소프트웨어로 해결하고자하는 문제의 영역을 말합니다. 도메인은 여러 하위 도메인들로 구성됩니다. 주문 도메인을 예를 들면, 주문 도메인 하위 도메인들로 결제, 정산, 배송, 할인, 리뷰 등이 존재합니다. 도메인 모델 도메인 모델은 특정 도메인을 개념적으로 표현한 것입니다. 표현 방식에는 필드와 메서드를 가진 객체들간의 매핑을 나타낸 객체 기반 방식이나 상태 전이의 흐름도를 나타낸 상태 다이어그램 방식 등이 있는데 도메인을 이해하기 위한 목적이라면 어떠한 방식이라도 상관 없습니다. 단, 여러 하위 도메인들로 구성된 도메인 모델을 하나의 다이어그램으로 표현하면 안되고 하위 도메인들마다 별도로 모델을 만들어야 합니다. 예를 들어서 주문 도메인 모델안에 결제, 정산, 배송, 할인, 리뷰 등..
2021.08.14 -
[Java] 제네릭
제네릭(Generics)이란? 제네릭이란 타입을 변수화하고 컴파일 타임에 타입을 체크할 수 있게 해주는 기능입니다.(Compile-time Type Check) 제네릭은 JDK 1.5 버전 이후로 등장했습니다. 아래의 코드처럼 컬렉션에 제네릭으로 지정해놓은 타입이 아닌 객체를 넣으려면 컴파일 에러를 발생시킵니다. ArrayList list = new ArrayList(); list.add(new TV()); list.add(new Audio()); // 컴파일 에러 JDK 1.5 버전 이전까지는 아래와 같이 코드를 작성했는데 치명적인 문제가 있었습니다. ArrayList list = new ArrayList(); list.add(0); list.add(20); list.add("30"); //문자열 넣기..
2021.08.02 -
[JPA] 엔티티 매핑
객체지향의 객체(Entity)와 데이터베이스의 테이블과 매핑하는 '엔티티 매핑'에 관하여 김영한님의 '자바 ORM 표준 JPA 프로그래밍 - 기본편' 강의를 요약한 내용입니다. https://www.inflearn.com/course/ORM-JPA-Basic 자바 ORM 표준 JPA 프로그래밍 - 기본편 - 인프런 | 강의 JPA를 처음 접하거나, 실무에서 JPA를 사용하지만 기본 이론이 부족하신 분들이 JPA의 기본 이론을 탄탄하게 학습해서 초보자도 실무에서 자신있게 JPA를 사용할 수 있습니다., 본 강의는 자바 백엔 www.inflearn.com JPA에서 지원하는 Annotation 객체와 테이블 매핑할 때: @Entity, @Table 객체의 필드와 테이블의 컬럼 매핑할 때: @Column 기본..
2021.07.30