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

다메카솔님의 프로필 이미지

작성한 질문수

스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술

controller에서 service에 id를 넘기는 방법

작성

·

108

0

안녕하세요

문의사항이 있어 질문드립니다.

 

일반적인 controller, service, repository layer 아키텍처를 구성할때,

answer controller의 특정 api가 파라미터를 통해 question 도메인의 id를 전달받은 경우가 있습니다.

answer controller는 question 엔티티를 controller에서 찾아 전달할 수도 있고, answer repository에 그대로 question Id를 전달하여 answer service가 question 엔티티를 찾도록 위임할 수도 있습니다.

 

이때 어떤 방법을 선택하는 것이 더 객체지향이나 유지보수 측면에서 좋을지 조언을 얻고 싶습니다.

 

예상되는 장단점은 다음과 같습니다.

Controller에서 questionId를 그대로 전달할 경우

  • 장점

    • Controller의 코드가 복잡해지지 않고 web 계층 에만 집중할 수 있음

  • 단점

    • service 계층에서 많은 일을 해야 함

controller에서 Question 엔티티를 조회하여 전달할 경우

  • 장점

    • service 인터페이스가 깔끔해짐

  • 단점

    • controller가 조금 더 복잡해진다.

    • question 엔티티를 조회하는 것이, 과연 controller의 역할인지 의문

답변 1

0

안녕하세요. 다메카솔님, 공식 서포터즈 y2gcoder입니다.

저는 식별자만 서비스 파라미터로 넘겨주는 것을 추천합니다!

말씀하신 것처럼 컨트롤러 계층에서 도메인 엔티티를 알고 있으면 좀 더 컨트롤러 계층이 복잡해질 수 있습니다.

컨트롤러는 HTTP 요청과 관련된 역할만 수행하고, 비즈니스 로직이나 비즈니스 로직의 순서를 제어하는 부분은 서비스 계층에 위임하는 것이 좋다고 생각합니다:)

다만 모든 프로젝트는 요구사항이나 비용에 따라 다를 수 있으니 다메카솔님의 상황에 맞는 선택을 하시는 것이 제일입니다!

 

감사합니다.