인프런 커뮤니티 질문&답변

허진호님의 프로필 이미지

작성한 질문수

실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화

간단한 주문 조회 V4: JPA에서 DTO로 바로 조회

DTO 프로젝트 위치 관련

해결된 질문

작성

·

2.6K

9

안녕하세요

orderSimpleQueryDTO의 경우에는 특수한 쿼리를 위한 경로에 위치시켰는데 DTO를 프로젝트에서 일반적으로 어디에 위치시키는지 궁금합니다.

강의를 들으면서 팀 프로젝트를 같이 진행하고 있는데 그 프로젝트에서는 Domain에 위치시켰습니다.

현업에서나 아니면 강사님께서는 어느 위치를 선호하시는지 궁금합니다.

답변 1

31

김영한님의 프로필 이미지
김영한
지식공유자

네 진호님 좋은 질문입니다.

사실 DTO의 위치라는 것은 패키지 설계를 어떻게 가져가는가에 따라 완전히 달라집니다.

예를 들어서 도메인에 포함 될 수 도 있고, 아니면 별도의 dto 패키지를 만들어서 공용으로 사용할 수 도 있습니다.

어떤 경우는 repository 계층에 있을 수도 있고, service 계층에 있을 수도 있습니다.

저는 어느 한 곳을 딱 정하기 보다는, 여러 패키지에서 공유해야 하는 상황이면 별도의 dto 패키지를 만들어서 넣어둡니다.

만약 특정 서비스 계층까지만 사용되면, 해당 서비스 계층에 dto클래스를 함께 둡니다.

만약 특성 repository 까지 해당 dto가 사용되면 해당 repository 계층에 dto클래스를 함께 둡니다.

궁극적으로는 패키지 응집도와 결합도를 고민하면서 가급적 다른 패키지와 연관을 줄이도록 하는 방식이 좋은 방식입니다.