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

신나는 라이언님의 프로필 이미지

작성한 질문수

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

MVC 패턴이 헷갈려서 질문드립니다.

해결된 질문

작성

·

237

·

수정됨

0

만약 프로젝트에서
model 패키지

  • dto 패키지

  • entity 패키지

service 패키지

repository 패키지

controller 패키지

view 패키지

위와 같은 구조를 가졌다면,

  1. mvc에 대입했을 때, controller와 view 패키지를 제외한 모든 패키지가 model에 해당한다.

     

만약 1번이 맞다면, service 패키지와 repository 패키지가 비즈니스 로직을 담당하고, model 패키지는 단순 데이터 관리만 해서 mvc에서의 model이라는 말과 서로 의미가 다르지 않은지에 대해 질문드립니다.

 

  1. 말 그대로 model 패키지, view 패키지, controller 패키지가 각각 mvc이고 service와 repository는 별개다.

만약 2번이 맞다면, mvc에서의 model은 비즈니스 로직까지 포함하는 것으로 아는데 service 패키지와 repository 패키지가 비즈니스 로직을 담당하면 model은 그 의미에 어긋나는게 아닌지 질문드립니다.

3. 패키지 구조를 일부 수정하여 더 완벽한 구조를 만들 수 있다면 그 예시에 대해 알려주시면 감사하겠습니다.

답변 2

1

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

안녕하세요. 신나는 라이언님

AI 인턴이 답을 잘 해주었는데요. Model의 정의는 문맥에 따라서 달라집니다. AI 인턴의 답변 링크들을 참고해주세요.

추가로 패키지 구조는 정답이 없습니다. 본인 프로젝트의 규모와 환경에 맞도록 구성해야 합니다.

다음을 참고해주세요.

https://www.inflearn.com/questions/16046

감사합니다.

AI 인턴은 "모델이 데이터뿐만 아니라 비즈니스 로직(서비스와 리포지토리를 포함)을 담당하는 넓은 의미를 가지고 있다는 점을 명심하십시오." 라고 했는데 영한님 말씀에 따르면 모델이 데이터와 비즈니스 로직 각각을 의미하는 좁은 의미로도 사용될 수 있다고 이해하면 되나요?

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

안녕하세요. 신나는 라이언님

Model이라는 의미가 문맥에 따라서 다르게 사용됩니다.

MVC에서 데이터를 View로 전달하는 Model이라는 의미도 있고,

비즈니스 모델을 다룬다는 의미도 있습니다.

각각 다르게 이해하시면 됩니다.

감사합니다.

1

안녕하세요, 인프런 AI 인턴입니다.

신나는 라이언님의 MVC 패턴과 관련된 질문에 대해 알아보겠습니다. MVC 패턴에 대한 이해와 관련해서, 특히 모델(Model), 뷰(View), 컨트롤러(Controller)의 역할 및 폴더 구조에 대해서 궁금해하신 부분에 대해 설명드리겠습니다.

  1. MVC 패턴에서의 모델(Model)은 애플리케이션의 데이터 및 데이터 처리(즉, 비즈니스 로직)를 담당합니다. 따라서 서비스(Service)와 리포지토리(Repository) 계층 또한 MVC의 모델(Model)에 포함된다고 볼 수 있으며, 이는 1번에서 언급한 바와 일치합니다.

  2. 그러나 실제 구현에서는 폴더 구조가 MVC의 개념을 완전히 반영하지 않아도 됩니다. 표면적으로 MVC 폴더 구조로 나누어져 있다고 해서, 내부의 구현이나 설계가 MVC 패턴을 정확히 따른다고 볼 수 없으며, 핵심은 각 계층의 역할을 명확히 분리하고, 서로 간의 의존성을 최소화하는 것입니다.

  3. 실전 응용에서는 MVC 패턴 이외에도 서비스(Service) 레이어, 데이터 액세스 레이어(Repository) 등을 도입하여, 모델(Model)의 책임과 역할을 좀 더 세분화하여 관리할 수 있습니다. 모델 폴더 안에 dto와 entity를 두고, 서비스와 리포지토리를 별도의 레이어로 구성하는 것이 좋은 예입니다.

질문 하신 내용과 밀접하게 연관된 다음의 질문들을 참조하시면 도움이 될 것 같습니다:

여기에 나오는 답변들은 MVC 패턴에서 모델의 역할과 서비스, 리포지토리 간의 관계에 대해 해명해 주고 있습니다. 특히 모델이 데이터뿐만 아니라 비즈니스 로직(서비스와 리포지토리를 포함)을 담당하는 넓은 의미를 가지고 있다는 점을 명심하십시오.

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