Controller에서 Repository 접근
1129
작성한 질문수 7
DDD 자료를 찾아보면 강의 자료와 같이 Domain이 전체 레이어를 아우르고, Controller에서 Repository를 접근 하도록 설계되어 있습니다.
기초 강의에서는 Entity를 Controller에 넘기지 말라고 말씀 하셨고 그 이유도 충분히 이해 했었습니다.
지금 예제에서는 Controller가 Repository를 호출하게 된다면 Entity가 넘어가게 될텐데... 강의상 편의를 위해서 하신건가요? 실무에서도 빈번하게 사용하는 구조인가요?
추가적으로 DTO를 사용한다면, 아래 예제 계층에서 오고가는 DTO에 대한 표현(naming rule, suffix, package 등등)을 어떻게 하시는지 궁금합니다.
- web <-> controller
- service <-> repository
답변 2
5
안녕하세요. 챕스틱님^^
제가 말씀드린 내용을 정확하게 다시 풀어드리면, 엔티티를 컨트롤러에서 사용해도 되지만, 컨트롤러에서 리턴을 해서 API를 만들 때 엔티티를 사용하지 말라는 의미입니다.
스프링에서 @ResponseBody를 사용하면서 엔티티 자체를 넘기면 바로 엔티티를 API로 반환할 수 있는데, 이것을 하지 말라는 의미입니다.(활용2편에서 더 자세히 예제로 설명합니다^^)
엔티티는 우리 프로젝트의 핵심 도메인이기 때문에 모든 곳에서 접근해도 됩니다. 물론 프로젝트 아키텍처를 어떻게 설계하는가에 따라서 정말 컨트롤러에서 엔티티를 사용하지 못하게 설계하는 방법도 있습니다.
DTO에 대한 표현은 딱 따로 잡는 것은 없습니다^^ 대신에 DTO를 만들때 가장 주의해야 할 점은 페키지 의존관계 입니다. 이 DTO를 어디에서 사용하는가 보고, DTO의 위치를 잡아야 합니다. 예를 들어서 repository까지 사용하는 DTO이면 repository와 같은 위치에 두던가 그 근처에 두어야지, DTO를 컨트롤러나 서비스 패키지에 위치하도록 두면 안됩니다.
감사합니다.
sdk 설정 오류
0
50
2
오탈자 - @Transactional
0
55
1
src/test/resources 테스트 경로 문제
0
50
1
상품 등록후 H2 db 출력 순서 바꿀 수 있나요?
0
64
1
MemberRepositoryTest 실행오류
0
81
1
boot 4.x >>> trasasction rolled back log & p6spy(영한님, 수업 자료 업데이트 해주시면 감사하겠습니다!!)
1
183
2
강의 마지막 QueryDSL 사용 부분 질문있습니다
1
139
2
클라이언트에서 isbn과 author 수정 요청을 한 경우에 대해 질문드립니다.
0
51
1
도메인 모델 패턴 vs 트랜잭션 스크립트 패턴
0
71
1
기본 생성자
0
60
1
h2 DB 연결시 jdbc url 변경 이유가 궁금합니다.
0
101
1
멤버서비스테스트 부분에서 막힙니다.
0
164
4
실무에서도 EntityManager를 이용해서 많이 작업하는 편일까요?
0
116
1
초반에 h2 다운로드 과정 꼭 필요한가요?
0
119
2
자신 필드에도 get으로 접근하는 이유가 있을까요?
0
114
1
24분 27초 연관관계 편의 메서드 위치
0
113
1
단건 주문만 가능하게 한건 의도한 부분이신가요?
0
109
2
빌드 툴, Gradle
0
59
1
h2연결은 된 것 같은데 엔티티 테이블까지 작성 후 확인해보아도 테이블이 안보입니다
0
77
2
Repository에서 EntityManager 주입 방식 차이
0
90
1
롬복과 사용자 정의 setter 메서드
0
71
1
주문 목록 조회 fetch join 질문드립니다
0
81
1
dirty checking 질문드립니다.
0
82
1
동시성 관련 질문입니다
0
74
1





