MVC패턴이란...

SaGo_MunGcci·2022년 8월 7일
0

스프링

목록 보기
14/31

Definition Access

1.MVC패턴이란?

MVC란 Model, View, Controller의 약자로 디자인 패턴 중 하나이다. 애플리케이션의 역할을 세 가지로 구분한다.

  • 웹에서의 MVC
    1. 사용자가 웹사이트에 접속
    2. Controller는 사용자가 요청한 웹페이지를 서비스하기 위해서 모델을 호출
    3. Model은 데이터베이스나 파일과 같은 데이터 소스를 제어한 후 그 결과를 Return
    4. Controller는 Model이 리턴한 결과를 View에 반영
    5. 데이터가 반영된 View는 사용자에게 보여짐


Mechanism

2. MVC 패턴

참고 : JSP는 Spring에 포함되는 개념이라고 생각하고 동시에 MVC동작방식은 동일해서 JSP를 사용한 MVC패턴을 공부한 것을 정리한다.

MVC 패턴에는 모델1 방식과 모델2 방식이 있다.

  • 모델1 방식 : Spring에서 출력과 로직을 전부 처리
  • 모델2 방식 : Spring에서 출력만 처리

MVC1

  • Controller 영역에 View 영역을 같이 구현하는 방식
  • 사용자의 요청을 JSP가 전부 처리
  • 요청을 받은 JSP는 JavaBean Service Class를 사용하여 웹브라우저 사용자가 요청한 작업을 처리하고 그 결과를 출력

MVC2

  • 웹브라우저 사용자의 요청을 서블릿이 받고 서블릿은 해당 요청으로 View로 보여줄 것인지 Model로 보낼 것인지를 판단하여 전송
  • HTML 소스와 JAVA 소스를 분리해놓았기 때문에 모델1 방식에 비해 확장과 유지보수가 용이하다.

MVC1 vs MVC2

Model

  • 정보(data)들의 가공을 책임지는 컴포넌트
  • 비즈니스 로직을 처리한 후 모델의 변경사항을 컨트롤러와 뷰에 전달
  • 모델의 규칙
    • 사용자가 편집하길 원하는 모든 데이터를 가지고 있어야 한다.
    • 뷰나 컨트롤러에 대해서 어떤 정보도 알지 말아야 한다.
    • 변경이 일어나면 변경 통지에 대한 처리 방법을 구현해야 한다.

View

  • 사용자에게 보여지는 부분(User Interface)
  • 모델에게 질의하여 데이터를 전달 받으며 받은 데이터를 화면에 표시해주는 역할
  • 모델에게 전달받은 데이터를 별도로 저장하지 않아야 하며 사용자가 화면에 표시된 내용을 변경하게 되면 모델에게 전달하여 모델을 변경해야 한다.
  • 뷰의 규칙
    • 모델이 가지고 있는 정보를 따로 저장해서는 안된다.
    • 모델이나 컨트롤러와 같이 다른 구성요소들을 몰라야 한다.
    • 변경이 일어나면 변경통지에 대한 처리방법을 구현해야만 한다.

Controller

  • 모델과 뷰 사이를 이어주는 다리 역할을 한다.
  • 모델이나 뷰로부터 변경 내용을 통지 받으면 이를 각 구성 요소에게 통지
  • 사용자가 어플리케이션을 조작하여 발생하는 변경 이벤트들을 처리하는 역할
  • 컨트롤러의 규칙
    • 모델이나 뷰에 대해서 알고 있어야 한다.
    • 모델이나 뷰의 변경을 모니터링 해야 한다.

MVC 패턴을 사용하는 이유

  • 유지보수의 편리성

  • 중복 코드 제거

참고 : https://developer.mozilla.org/ko/docs/Glossary/MVC

참고 : https://opentutorials.org/course/697/3828

참고 : https://ko.wikipedia.org/wiki/%EB%94%94%EC%9E%90%EC%9D%B8_%ED%8C%A8%ED%84%B4



Retrospection

  • 스프링은 MVC패턴을 지향한다 이 디폴트 개념인 MVC패턴을 이해하고 나서 스프링을 다뤄야야 한다. 그렇지 않으면 스프링프레임워크를 사용할 이유가 없고 다른 프레임워크를 사용하는 것과 마찬가지이다. 앞으로 스프링의 시대는 계속 될 것이다. 부분적인 업데이트와 구조적인 변경이 있을 수 있지만 MVC패턴자체는 지속 될 가능성이 매우 높다. 따라서 스프링을 사용하는 백엔드 개발자는 반드시 이 개념을 이해하는 것이 필수이고 가장 선행적으로 공부해야한다.

  • MVC 패턴을 하나하나 이해하는 것보다 익숙해지는 것이 훨씬 성장속도가 빠르다. 즉 하나의 프로젝트에 MVC패턴을 적용해봄으로써 세부적인 DTO,JPA를 이해할 수 있다.

  • 특히 JPA는 스프링프레임워크에서 사용하는 ORM으로써 DB와 관련된 개념이기 때문에 반드시 이해하고 많이 공부해야하는 개념이다. 하지만 MVC패턴을 기본적으로 다루지 못한다면 JPA를 제대로 사용하지 못한다.

  • 따라서 프로젝트가 커지고 복잡해지면 오류가 반드시 발생하는데 이 오류를 제대로 해결하기 위해서는 MVC패턴으로 설계했는지 안했는지의 차이가 오류를 해결하는 시간과 효율을 좌우한다.

참고 자료 : 기술매니저님 기술 순회 및 라이브세션 내용과 내생각



profile
이리저리 생각만 많은 사고뭉치입니다.

0개의 댓글