먼저 초보적인 질문 죄송합니더
개발할때 보통 DTO 위치를 마지막에 사용하는 레이어에 위치 시키는게 일반적인거 같은데
예를들어 itemRequestDTO, itemResponseDTO 있다고 가정했을떄,
컨트롤러 -> 서비스로 넘어갈때 requstdto 넘기고 서비스 레이어에서 엔티티로 변환해서 리포지토리로 넘기면
dto 위치를 서비스레이어랑 같은 패키지로 잡는게 좋나요?
1. 이 위치가 사람마다 말이 좀 다른거같아서 뭐가 좋은 구조인지 .. 모르겠어요 고수형님들 보통 어디에 위치시키나요?
2. DTO 는 별도의 패키지 만들어서 거기서 관리하는게 더 나은지..?
컨트롤러 -> 서비스 -> 레포 순으로 의존할텐데, 레포까지 전달되는 dto면 이론상 레포 옆에 둬야지 이 dto를 여러 패키지의 레포에서 쓰면 공용 패키지를 하나 만드는게 좋고 근데 컨트롤러에사 레포까지 전달되는 dto는 흔하지 않을텐데..
그럼 서비스에서 DTO -> 엔티티 변환해서 리포지토리에는 엔티티를 인자로 넘겨주면 마지막 쓰는건 service 레이어니까 서비스 옆에 두는게 맞는거죠?
그렇지, 하지만 여러 패키지의 서비스에서 쓴다면 또 공용 패키지로 빼야함 근데 도메인 관점에서 보자면, 완전히 다른 패키지의 서비스에서 같은 dto를 쓰는건 흔한 일이 아니야 페이지네이션용 dto처럼 완전 공용인거 빼고
서로 다른 도메인의 서비스인데 같은 DTO 를 쓰는 경우는 따로 패키지를 분리해서 관리하는게 좋고 그 외는 의존관계 보고 위치 시키면 되겠네요
그렇지 서로 다른 도메인인데 같은 dto를 쓰는 경우, 소유 도메인이 명확한 경우에는 해당 도메인의 패키지에 위치시킬수도 있어 완전 공용 dto가 아닌데 소유권이 모호하면 도메인을 잘못 나눈거고
감사합니다 말씀해주신대로 기준을 잡겠습니더