MVC 패턴이란?

2023. 11. 5. 04:10· Java/Spring
목차
  1. 참고
  2. Model, View, Controller?
  3. 구성 요소
  4. 한계
  5. Model 세분화
  6. MVC 패턴을 지키기 위한 5가지 원칙

참고

  • 모델-뷰-컨트롤러 - 위키백과, 우리 모두의 백과사전
  • [10분 테코톡] 🧀 제리의 MVC 패턴
  • <MVC패턴>Controller & Servicec & Repository란 무엇일까?(TIL.220525)
  • MVC - MDN Web Docs 용어 사전: 웹 용어 정의 | MDN
  • MVC Design Pattern
  • MVC(Model, View, Controller) Pattern
  • [Spring] Controller, Service, Repository

Model, View, Controller?

MVC 다이어그램
웹 애플리케이션에서의 MVC 구성요소 다이어그램

소프트웨어 공학에서 사용되는 소프트웨어 디자인 패턴.
사용자 인터페이스와 비즈니스 로직을 분리할 수 있다.
관심사의 분리로 서로 영향을 주지 않는 유지보수가 쉬운 애플리케이션을 만들 수 있다.

구성 요소

MVC 예시 - 쇼핑 리스트 앱

  • Model
    • 데이터와 비즈니스 로직을 관리
    • 애플리케이션의 데이터
    • 앱이 포함해야 할 데이터가 무엇인지 정의함.
    • 데이터가 변경되면 이를 View에게 알리는게 일반적이나 업데이트된 뷰를 조절하기 위해 Controller에 알리기도 함.
    • 규칙
      • 사용자가 편집하길 원하는 모든 데이터 가지고 있을 것.
  • View
    • 레이아웃과 화면(UI)을 처리
    • 항목이 사용자에게 보여지는 방식을 정의
    • 표시할 데이터(사용자마다 다른 부분)만 Model에서 정보를 얻어옴.
    • 규칙
      • Model이 가지고 있는 정보 따로 저장하지 않을 것.
      • 변경이 일어나면 변경 통지에 대한 처리 방법을 구현할 것.
  • Controller
    • Model과 View로 명령 전달
    • Model과 View의 다리 역할
      • ex) 리스트 추가/제거 -> Controller에 입력 전달 -> Model 변화 요청 -> 업데이트 된 Model을 View로 전달
    • 앱의 사용자로부터의 입력에 대한 응답으로 Model 및/또는 View를 업데이트하는 로직을 포함함.
    • 규칙
      • Model이나 View의 변경을 모니터링할 것.

한계

  • 프로그램의 규모가 커지거나 복잡한 화면을 구성할 때 다수의 View와 Model이 Controller에 연결되기 때문에 Controller의 크기가 불필요하게 커지는 현상이 발생한다.
  • 이를 Massive-View-Controller라고 부르면 이를 보완하기 위해 다음과 같은 패턴들이 파생됐다.
    Massive-View-Controller
    • MVP 패턴
    • MVVM 패턴
    • Flux
    • Redux
    • RxMVVM

Model 세분화

MVC 패턴

Service

  • Spring 4계층 구조의 Application 계층을 담당하며 비즈니스 로직을 정의
  • 애플리케이션의 비즈니스 로직을 포함하며 사용자의 요청을 이행하기 위해 도메인 객체들이 협력하여 요청을 수행하도록 조정할 책임이 있다.
  • Controller가 요청한 작업을 수행하기 위해 호출할 수 있는 메소드 집합을 제공한다.
  • 사용자로부터 전달받은 데이터를 가공하여 처리해줌
    • JPARepository를 상속하는 객체를 가져와 어떤 처리를 할지 비즈니스 로직을 처리한다.
DAO 와 DTO
  • Data Access Object
    • DB에 접근하기 위한 객체
  • Data Transfer Object
    • 계층간 데이터 교환을 위한 객체
      • 사용자로 부터데이터를 받아 JPA로 DB에 저장한다.
      • JPA로 DB에서 받아온 데이터를 담아 사용자에게 전달한다.
      • 순수 Getter & Setter 또는 Builder 로 구성된 클래스

Repository

  • Entity에 의해 생성된 DB에 접근하는 메서드들을 사용하기 위한 인터페이스
  • Spring 4계층 구조에서 Infrastructure 계층을 담당하며, 주로 DB와 같은 외부와의 통신을 담당한다.
  • 얻어온 정보를 Application이나 Domain 계층에 전달하는 역할 수행

MVC 패턴을 지키기 위한 5가지 원칙

  1. Model은 Controller와 View에 의존하지 않는다.
    -> Model내에 Controller와 View 코드가 존재하지 않는다.
  2. View는 Model에만 의존하고 Controller에 의존하지 않는다.
  3. View는 사용자마다 다른 부분에서만 Model에서 데이터를 받아온다.
  4. Controller는 Model과 View 모두 의존할 수 있다.
  5. View가 Model로부터 데이터를 받을 때는 반드시 Controller에게 받아야 한다.

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

스프링 시큐리티 인 액션] 5장_인증  (0) 2024.06.28
스프링 시큐리티 인 액션] 4장_암호처리  (0) 2024.06.21
스프링 시큐리티 인 액션] 3장_사용자 관리  (0) 2024.06.19
  1. 참고
  2. Model, View, Controller?
  3. 구성 요소
  4. 한계
  5. Model 세분화
  6. MVC 패턴을 지키기 위한 5가지 원칙
'Java/Spring' 카테고리의 다른 글
  • 스프링 시큐리티 인 액션] 5장_인증
  • 스프링 시큐리티 인 액션] 4장_암호처리
  • 스프링 시큐리티 인 액션] 3장_사용자 관리
greatwhite
greatwhite
우직하게greatwhite 님의 블로그입니다.
greatwhite
우직하게
greatwhite
전체
오늘
어제
  • 분류 전체보기
    • Projects
      • 스위프] Woory
    • Python
    • Java
      • Spring
    • JPA
    • Problem Solving
      • 백준
      • 프로그래머스
    • Today I Learned

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • math
  • 백준
  • JPA
  • 다익스트라
  • MVC
  • Java
  • Mermaid
  • 티스토리챌린지
  • knapsack
  • 롬복
  • Euclidean
  • backtracking
  • 스프링
  • erd 문법
  • spring
  • BFS
  • @default
  • 자바
  • vi
  • pigeonhole principle
  • implementation
  • 파이썬
  • python
  • 그리디
  • 비트마스킹
  • sql
  • 오블완
  • dfs
  • dp
  • 프로그래머스

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.1
greatwhite
MVC 패턴이란?
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.