inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

토비의 클린 스프링 - 도메인 모델 패턴과 헥사고날 아키텍처 Part 1

Member 도메인 코드 개선

MemberInfoUpdateRequest, MemberRegisterRequest의 패키지 위치

134

처아미나

작성한 질문수 4

0

학습중에 MemberInfoUpdateRequest, MemberRegisterRequest와 같은 객체들은 어댑터에서도 사용하고, 애플리케이션에서도 사용하고, 도메인 내부로직에도 사용하는데 도메인 패키지 내에 위치하는게 맞는지 의문이 들어서 질문드립니다!

java spring spring-boot jpa 리팩터링 ddd

답변 2

3

토비

계층간 의존관계를 생각하면 현재 Request로 끝나는 파라미터를 담은 레코드 클래스는 도메인에 있어야 계층형 아키텍처의 의존 관계 규칙을 지킬 수 있습니다. 도메인이 가장 안 쪽이 있기 때문에 자신을 포함해서 외부 계층에서 의존해도 안전합니다. 이걸 다른 계층으로 옮기면 계층간 단방향의 의존관계가 깨집니다.

 

0

처아미나

계층 간 매핑 전략에서 '단방향' 매핑 전략을 사용할때는 도메인 패키지에 위치하는게 맞겠네요! 감사합니다~

0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴입니다. 처아미나님께서 주신 질문에 대해 답변드리겠습니다.

DTO(Data Transfer Object) 위치에 대한 고민

MemberInfoUpdateRequestMemberRegisterRequest 같은 객체는 주로 데이터 전송을 목적으로 합니다. 이러한 객체의 패키지 위치를 결정하는 데에는 몇 가지 고려할 점이 있습니다:

  1. 사용 범위에 따른 패키지 구분: DTO가 사용되는 주요 컨텍스트에 따라 패키지를 결정하는 것이 좋습니다.

    • 도메인 논리 사용: 도메인 내부에서 비즈니스 로직과 밀접하게 연관된 경우, 도메인 패키지에 위치시키는 것이 적절할 수 있습니다.
    • 애플리케이션 계층 사용: 요청 데이터가 여러 계층에서 활용된다면, 애플리케이션 계층에 위치시키는 것이 관리 측면에서 유리할 수 있습니다.
  2. 응집력과 결합도: DTO는 주로 데이터를 담아 여러 계층 간 상호작용을 지원하기 위한 객체입니다. 따라서, 도메인 로직과 강하게 결합되지 않는 한 도메인 패키지에 직접 포함시키는 것이 최적이지 않을 수도 있습니다.

  3. 패키지 구조 유연성: 프로젝트의 구조에 따라 DTO의 위치는 유동적일 수 있습니다. 다양한 관점에서 고려하고 팀 내의 컨벤션에 따르는 것이 좋습니다.

관련 내용에 대해 더 자세히 배우고자 한다면 아래의 게시물을 참고해보세요:
- Member의 등록과 수정에 대한 API 설계

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

N+1 관련해서 질문있습니다.

0

46

3

도메인 모델에서 관계와 규칙을 구분하는 방법

0

61

2

헥사고날 아키텍처에서의 배치, 시큐리티, 비동기 이벤트 처리는 어떻게 하나요?

0

140

2

어댑터에서 도메인에 직접 의존하는 경우에 대해

0

136

2

Member 도메인이 PasswordEncoder를 받는 구조 질문 있습니다.

0

118

2

MemberService와 EmailSender 책임 분리에 대한 질문

0

111

2

NonNullApi를 NullMarked로 대체하라고 합니다.

0

133

2

39. 문서와 코드 다듬기 updateInfo 테스트 질문 있습니다.

0

82

2

Repository Adapter 설계에 대해 피드백을 부탁드립니다

0

112

2

헥사고날 part2 강의 출시 예정일 문의 드립니다.

0

264

2

PT 문의사항

0

104

1

초기 어플리케이션 구동 시 compose.yml 파싱 오류

0

153

2

애플리케이션의 JPA 리턴과 도메인 모델

0

131

2

애그리거트 루트의 하위 도메인들의 depth가 깊어질 때 문의

0

140

2

페이징 처리를 해야한다면 어떻게 해야할까요?

0

198

2

애그리거트의 repository

0

128

2

Domain Expert가 정확히 어떤 역할을 하는 사람인가요?

0

239

1

회원 애플리케이션 서비스 테스트 (1)

0

110

2

정적 팩토리 메서드 관련 질문드립니다!

0

112

2

spotbug + @NonNullApi 로만 Null 방어가 될까요?

0

132

2

required 포트에 관해서

0

96

2

혹시 다음 편은 언제쯤 오픈할까요?

0

173

2

서비스 단위 테스트 코드 작성

0

104

2

domain 모듈에 entity를 정의한다고 했을때

0

106

2