MVC 패턴 (Model–View–Controller)

·2025년 8월 21일

SPRING

목록 보기
11/15
post-thumbnail

1. 정의

소프트웨어 공학의 대표적인 디자인 패턴
프로그램을 역할별로 분리해 깔끔하고 효율적인 구조를 제공

2. 목적

관심사 분리 (Separation of Concerns)
유지보수성 ↑, 재사용성 ↑, 협업 효율 ↑

3. 종류

(1) MVC 1 패턴

구조 : Controller(View) ↔ Model
JSP 파일 안에 HTML + Java 로직을 같이 작성
✅ 장점: 개발 속도 빠름
❌ 단점: 코드 뒤섞임 → 유지보수/역할 분담 어려움

(2) MVC 2 패턴

구조 : View ↔ Controller ↔ Model
View = 화면, Controller = 로직/흐름 제어, Model = 데이터/DB
✅ 장점: 화면과 로직 분리 → 유지보수 용이
❌ 단점: 파일 개수 증가, 구조 복잡해짐

(3) MVC2 + 3-Tier (Spring MVC)

구조 : View ↔ Controller ↔ Service ↔ Repository(Model)
Controller의 역할(흐름 제어 vs 핵심 로직)을 분리해 Service 계층 추가
✅ 장점: 역할 세분화, AOP(관점 지향 프로그래밍), 트랜잭션 관리 유리
❌ 단점: 파일 수 증가, 구조 이해 필요

4. 레이어별 역할

(1) View

  • JSP, Thymeleaf, Mustache, React, Vue, Angular …
  • HTML/CSS/JS 등으로 UI 구현
  • Spring Boot: /resources/templates(Thymeleaf), - /resources/static(정적 파일)
  • JSP는 /webapp 폴더에 배치

(2) Controller

  • @Controller, @RestController
  • HTTP 요청/응답 처리, 데이터 변환(JSON ↔ 객체)
  • 요청 파라미터 검증(유효성 검사 1차)

(3) Service

  • @Service
  • 핵심 비즈니스 로직 담당
  • CRUD, 데이터 검증(2차), 연산/알고리즘, 트랜잭션 관리
  • SQL 자체는 포함하지 않음

(4) Repository (DAO)

  • @Repository
  • 실제 DB/저장소 접근 → SQL 실행, 엔티티 조작
  • JDBC, MyBatis, JPA 등 기술 사용

5. 유효성 검사 (Validation)

  • 여러 단계에서 반복해서 수행해야 함 (보안/안정성 ↑)
  1. Front (JS) : 빠른 피드백
  2. Controller : HTTP 요청 값 검증
  3. Service : 비즈니스 규칙 검증
  4. DB/SQL : 제약 조건 (PK, FK, UNIQUE, CHECK…)

6. MVC 흐름 다이어그램

[사용자 브라우저]
       │
       ▼
   [ View ]  ⇆  화면(UI, JSP/HTML/JS/CSS)
       │  요청/응답
       ▼
[ Controller ]  (@Controller, @RestController)
       │  서비스 호출
       ▼
[ Service ]  (@Service)
       │  DB 액세스
       ▼
[ Repository ]  (@Repository, DAO, JPA/MyBatis)
       │  SQL
       ▼
[ Database ]

7. 핵심 요약

  • MVC 1 → 화면+로직 뒤섞임 (빠르지만 유지보수 최악)
  • MVC 2 → View/Controller/Model 분리
  • MVC2 + 3-Tier → Spring에서 주로 사용, Service/Repository 계층까지 분리
  • 유효성 검사는 여러 레벨에서 중복적으로 수행하는 게 원칙

0개의 댓글