MVC 패턴?

 

Model, View, Controller 의 앞글자를 딴 디자인 패턴이다. 

 

 

Model, 모델

  • 데이터를 처리하는 영역 (데이터와 비즈니스 로직을 관리)
  • 데이터베이스 연동을 위한 DAO (Data Access Object)와 데이터 구조를 표현하는 DO (Data Object)로 구성

 

View, 뷰

  • 사용자에게 정보를 표시하는 역할
  • 웹 사이트, 어플과 같은 사용자 인터페이스 (UI)를 의미
  • 별도의 데이터를 보관하지 않음

 

Controller, 컨트롤러

  • 모델과 뷰 사이에서 브릿지(bridge) 역할을 수행
  • 사용자의 요청은 모두 컨트롤러를 통해 진행되어야 함

특 징

  • 어플리케이션의 역할을 세 가지 주요 부분으로 나누어 설계함으로써 서로 간의 의존성이 낮아짐
  • 독립적인 각 부분은 영향을 주지 않기 때문에, 유지 보수와 테스트하기 용이하고, 개발자 간 분업 및 협업이 원활해짐

 

단 점

  • 간단한 프로젝트에 MVC 패턴을 도입하는 것은 오버헤드일 수 있다. 모델-뷰-컨트롤러로 분리하는 구조는 큰 프로젝트에 더 유용하며, 작은 프로젝트에서는 과도한 구조화일 수 있다
  • 컨트롤러의 역할이 너무 커져 복잡해질 수 있다. "Massive-View-Controller" MVC 패턴을 구현할 때 발생하는 문제 중 하나를 가리키는 용어이다. 
    1. 다수의 뷰와 모델들이 컨트롤러를 통해 연결되기 때문에 컨트롤러가 많은 책임을 가질 수 있다
    2. 코드 가독성이 떨어지기 때문에, 유지 보수와 확장을 어렵게 만든다

 

 


MVC 프로젝트의 폴더 구조

  • src
    • main
      • java
        •  com/example/demo
          • user
            • controller    # 컨트롤러
            • service        # 서비스
              • impl
            • model          # 모델
          • board
            • controller
            • service
              • impl
            • model
          • DemoApplication.java  # 스프링 부트 애플리케이션의 시작점
    • resources
      • mybtis
        • mapper
    • webapp
      • WEB-INF
        • views   # (User Interface)

 

폴더 구조는 정해진 것은 없기 때문에, 다양하게 구조화할 수 있다

모델 부분에서는 vo / dto / repository 패키지로도 구성할 수 있지만, 나는 model 패키지로 구성하려 한다

그리고 MyBatis / JPA 를 사용하는지에 따라서도 다르게 구성되는 것 같다

 


참고 링크

 

 

[Design Pattern] 1. MVC 패턴

디자인 패턴

jooncco.com

 

MVC(Model, View, Controller) Pattern

<br /><br />

junhyunny.github.io

 

'JAVA > Spring' 카테고리의 다른 글

[Springboot] MyBatis (feat. MySQL)  (1) 2023.09.11
[Springboot] Lombok  (0) 2023.09.04
[Springboot] 스프링부트 시작하기  (0) 2023.09.03

+ Recent posts