MVC 패턴 이란?
Model, View, Controller의 약자이며,
UI와 비즈니스 로직, 데이터 접근을 역할별로 분리해서 유지보수성과 테스트 편의성을 높이는 아키텍처 패턴입니다!
역할
1. Model
도메인 데이터와 규칙을 표현합니다. (EX: Student, Book 등등)
DB 접근과 비즈니스 규칙을 포함하고 연계합니다.
Model에서는 데이터를 가지고 비즈니스 로직을 통해 데이터 처리를 담당합니다.
보통 가장 기본적인 CRUD 기능을 여기에서 처리합니다.
그리고 데이터의 상태가 변경되면 이를 Controller를 통해서 View에 알립니다.
2. View
사용자에게 보여주는 화면이며, 비즈니스 로직은 따로 없고 입출력 하게되는 페이지입니다.
즉, 사용자가 원하는 데이터 처리를 View에서는 처리 된 데이터를 어떻게 보여줄지에 포커스합니다.
3. Controller
사용자의 입력을 받아 적절한 서비스를 호출 하고 Model을 업데이트 후 View로 전달합니다.
중개자 같은 역할을 하고 있다고 생각하면 됩니다.
사용자가 어떠한 데이터 처리를 원한다면 이를 Model에서 처리 후 Controller에게 알려주고
Controller는 View한테 알려줍니다.

위 사진을 보면서 글을 읽으면 조금 더 쉽게 이해할 수 있을 겁니다!
MCV 패턴을 사용하는 이유는 뭘까?
먼저 MCV 패턴이 왜 생겼는지 부터 알면 좋을 것 같습니다.
과거 개발자들은 규칙 없이 코드를 작성했고, 새로운 기능이나 에러가 있을 때 대부분의 코드를 전부 수정해야 했습니다.
그러다가 어떠한 규칙을 만들어서 코드를 작성을 하다보니 유지보수가 편하다 라는 것을 발견하고,
이를 공식 처럼 만들어서 논문으로 발표했습니다. 그래서 현재 우리는 여러 디자인 패턴 중에 MVC 패턴을 사용하고 있는 겁니다.
즉, MVC 패턴은 유지보수가 편해지는 코드 구성 방식입니다!
MCV 패턴은 왜 유지 보수가 편할까?
1. 역할 분리로 인한 효율성
역할을 분리해서 각자 맡은 역할에만 집중할 수 있어 개발자들이 동시에 서로 다른 부분을 작업할 수 있습니다.
2. 재사용성과 확장성
하나의 모델은 여러 뷰에서 재사용될 수 있습니다. 이러면 무분별한 메모리 사용을 크게 줄일 수 있습니다.
3. 쉬운 유지보수
역할이 명확하게 분리되어 코드를 이해하기 쉽고, 문제가 발생했을 때 원인을 찾기가 수월해집니다.
그러면 실제 코드에서 어떻게 사용되는지 코드와 함께 살펴보겠습니다.

계층 구조는 이렇게 Controller와 Model 그리고 View로 만듭니다.
Controller

Controller는 싱글톤으로 만듭니다. 싱글톤으로 만들면 이 객체를 하나만 생성하고 생성된 객체를 전역으로 공유하여 사용하게 됩니다.
사용자가 Controller에 원하는 기능을 호출하면 Controller는 DAO와 연결해주는 역할를 해주고 있습니다.
DAO


DAO에서는 실제 비즈니스 로직을 작성하는 클래스입니다.
저희는 인터페이스를 사용하여 DAO를 설계하고 코드를 작성했습니다.
DAO는 Controller에서 요청들어온 기능을 DAO에서 실행하고 다시 Controller한테 처리한 데이터를 보내줍니다.
View

View에서는 Controller가 DAO(Model)에서 처리 된 데이터를 View에 보내주게 되면서 사용자가 확인을 할 수 있게 됩니다.
간단하게 코드와 살펴보았습니다. 코드에 JDBC를 사용하여 OracleDB와 연결해서 사용하고 있습니다.
이것도 추후에 따로 글을 작성하겠습니다.
DTO

추가적으로 DTO는 값을 담는 바구니 역할을 한다고 생각하면 됩니다.
멤버 변수를 선언하고 필요한 생성자와 Getter/Setter를 기본적으로 가지고 있습니다.
멤버 변수는 실제 DB의 속성이름과 같게 하는 것이 관례입니다.
추후에 JDBC와 함께 자세히 다루도록 하겠습니다
'개발 > Java' 카테고리의 다른 글
| 멀티캠퍼스 [현대 이지웰] 외부 파일에 이미지 저장 및 불러오기 (0) | 2025.12.15 |
|---|---|
| 멀티캠퍼스 [현대 이지웰] 제네릭과 컬렉션 (1) | 2025.08.26 |
| 멀티캠퍼스 [현대 이지웰] Java 상속?, 다형성? 이게 다 뭘까? (2) | 2025.08.11 |
| 멀티캠퍼스 [현대 이지웰] Java 기본 개념 클래스에 대해서 알아보자! (3) | 2025.08.03 |