@Repository@RequiredArgsConstructorpublic class HubQueryRepository implements CustomHubRepository { private final JPAQueryFactory queryFactory; @Override public Page findDynamicQuery(HubSearchCriteria criteria, Pageable pageable) { JPAQuery query = queryFactory .selectFrom(hub) .where( eqId(criteria.getId()), eqName(criteria.getName()), eqAddress(criteria.getAddress()), eqLatitu..
팀 구성팀명5잉메리호팀원김기훈이지언이예본이하은전은배 S.AAPI 명세서https://www.notion.so/teamsparta/API-1b32dc3ef51480ef8855e1b7bb840b1a테이블 명세서https://www.notion.so/teamsparta/1b32dc3ef514802d84a1dba22aa3c429ERD 명세서https://www.erdcloud.com/d/GapKxaBr7GMZghHXB projectDraw ERD with your team members. All states are shared in real time. And it's FREE. Database modeling tool.www.erdcloud.com인프라 설계서https://www.notion.so/teamspa..
여러 애그리거트가 필요한 기능도메인 영역의 코드를 작성하다 보면, 한 애그리거트로 기능을 구현할 수 없는 경우가 있습니다. 대표적으로, 결제 금액 계산 로직이 있는데 다음과 같은 내용이 필요합니다.상품 애그리거트주문 애그리거트할인 쿠폰 애그리거트회원 애그리거트이때 생각해볼 수 있는 방법은 '주문 애그리거트'가 필요한 데이터를 모두 가지도록 한 뒤 할인 금액 계산 책임을 주문 애그리거트에 할당하는 방법입니다. 만약 이때, 특별 감사 세일을 적용해 한 달간 2% 추가 할인을 적용하면 어떻게 될까요? 이 할인 정책은 주문 애그리거트의 구성요소와 관련이 없음에도 주문 애그리거트의 코드를 수정해야 합니다. 이 경우 다음과 같은 문제점이 발생합니다.자신의 책임 범위를 넘어서는 기능을 구현하게 된다.외부에 대한 의존..
표현 영역의 책임은 크게 다음과 같습니다.사용자가 시스템을 사용할 수 있는 흐름(화면)을 제공하고 제어한다.사용자의 요청을 알맞은 응용 서비스에 전달하고 결과를 사용자에게 제공한다.사용자의 세션을 관리한다.값 검증값 검증은 표현 영역과 응용 서비스 두 곳에서 모두 수행할 수 있습니다. 원칙적으로는 모든 값에 대한 검증은 응용 서비스에서 처리합니다.표현 영역과 응용 서비스는 값 검사를 다음과 같이 나누어 수행할 수 있습니다.표현 영역 : 필수 값, 값의 형식, 범위 등을 검증응용 서비스 : 데이터의 존재 유무와 같은 논리적 오류를 검증하지만, 응용 서비스에서 필요한 값 검증과 논리적 값 검증을 모두 처리하면 작성할 코드가 늘어나는 불편함이 있지만, 응용 서비스의 완성도가 높아진다는 장점 또한 존재합니다. ..
앞선 포스팅에서는 도메인 영역과 관련해 살펴 보았습니다. 이 도메인이 제 기능을 하기 위해서는 사용자와 도메인을 연결해 주는 매개체가 필요하며 응용 영역과 표현 영역이 이 매개체 역할을 합니다. 이번 포스팅에서는 응용 영역에 대해 알아보겠습니다.응용 서비스응용 서비스는 사용자(클라이언트)가 요청한 기능을 실행합니다.주요 역할도메인 객체를 사용해 사용자의 역할을 처리트랜잭션 처리응용 서비스는 주로 도메인 객체 간의 흐름을 제어하기에 아래와 같이 단순한 형태를 가집니다.일반적인 기능public Result doSomeFunc(SomeReq req) { // 1. 리포지터리에서 애그리거트를 구한다. SomeAgg agg = someAggRepository.findById(req.getId()); checkN..
이번 포스팅에서는 자바의 ORM 표준인 JPA를 이용해 리포지터리와 애그리거트를 구현하는 방법에 대해 살펴보겠습니다. 앞선 포스팅에서 설명한 것처럼 리포지터리 인터페이스는 애그리거트와 같은 도메인 영역에 속하고, 이를 구현한 클래스는 인프라스트럭처 영역에 속합니다.가능하면 위와 같이 리포지터리 구현 클래스를 인프라스트럭처 영역에 위치시켜 인프라스트럭처에 대한 의존을 낮추는 것이 중요합니다.리포지터리 인터페이스는 애그리거트 루트를 기준으로 작성합니다.애그리거트를 수정한 결과를 저장소에 반영하는 메서드는 필요없습니다.JPA를 사용하면 트랜잭션 범위에서 변경한 데이터를 자동으로 DB에 반영합니다.JPA는 변경된 객체의 데이터를 DB에 반영하기 위해 UPDATE 쿼리를 실행합니다.매핑 구현애그리거트와 JPA 매..
내 블로그 - 관리자 홈 전환 |
Q
Q
|
---|---|
새 글 쓰기 |
W
W
|
글 수정 (권한 있는 경우) |
E
E
|
---|---|
댓글 영역으로 이동 |
C
C
|
이 페이지의 URL 복사 |
S
S
|
---|---|
맨 위로 이동 |
T
T
|
티스토리 홈 이동 |
H
H
|
단축키 안내 |
Shift + /
⇧ + /
|
* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.