MVC 모델, MVC 패턴 이란?
MODEL, VIEW, CONTROLLER의 줄임말
데이터의 처리와 비즈니스 로직, 사용자 화면 세 가지 요소를 각각 독립적으로 디자인하는 것
MODEL
프로그램 내부 데이터 처리
DB와 연동하여 사용자가 입력한 데이터나 사용자에게 출력할 데이터를 다루는 역할
MODEL의 상태에 변화가 있을 때 CONTROLLER와 VIEW에 통보
비즈니스 로직과 데이터를 다루는 영역
비즈니스 데이터는 DBMS에 의해 관리되고 그 데이터를 다루는 연산은 SQL문을 통해 구현된다
편집하고자하는 모든 데이터를 가지고 있어야 한다
View나 Controller에 대하여 어떤 정보도 알지 말아야 한다
변경이 일어나면 변경 처리 방법을 구현해야 한다
데이터베이스 schema, 데이터 odbc, 쿼리문 등을 모두 가지고 있는 것
Business Layer / Persistence Layer / Domain Model Layer
Business Layer
Service 클래스로 Controller 계층과 Persistence 계층 사이를 연결하는 역할로 두 계층이 직접적으로 통신하지 않게 하여 애플
리케이션의 유연성을 증가->다른 계층들과 통신하기 위한 인터페이스 제공
핵심 업무를 어떻게 처리할 지에 대한 방법을 기술
트랜잭션 처리
Persistence Layer
DAO(Data Access Object, 실제적으로 DB에 접근하는 객체) 클래스가 담당한다
데이터 처리 담당
데이터베이스에서 데이터를 빼내 객체화하며 데이터를 저장, 수정, 삭제하는 계층->데이터베이스나 파일에 접근하여 데이터를 CRUD하는 계층(Hibernate, ibatis, EJB)
dataSource와 Connection Pool, Sql Mapping 담당
Domain Model Layer
데이터 객체를 의미
DTO는 VO(Value Object, 자바빈즈)와 밀접하다
일반적으로 DTO는 로직이 없이 속성과 속성에 접근하기 위한 setter, getter메소드만 가지고 있다
데이터베이스의 모든 정보를 일일이 객체로 만들기보다는 도메인 모델을 이용하여 서비스
VIEW
사용자 인터페이스, MODEL에서 전달받은 데이터 출력
모델이 가진 정보를 따로 저장하면 안된다
자바 웹 애플리케이션에서는 JSP를 통해 구현
MVC Model 2에서는 JSP가 그 역할을 한다
CONTROLLER
MODEL과 VIEW의 상호작용
클라이언트의 요청을 받아서 실제 업무를 수행하는 부분
클라이언트 요청에 대해 MODEL과 VIEW를 결정하여 전달
DB와의 접근이 필요하다면 MODEL을 통하여 DB에 접근한 뒤 받아온 데이터를 VIEW로 전달해준다
모델이나 뷰에 대하여 알고 있어야 한다
MVC Model 1에서는 Servlet과 JSP가 같이 쓰이므로 JSP가 Controller 역할을 수행하게 되면서
프리젠테이션 로직과 비즈니스 로직의 분리가 어렵고 뷰의 재활용성이 떨어진다
MVC Model 2에서는 Servlet이다
작은 애플리케이션은 JSP 내에서 계층을 분리하지 않고 제어와 로직, 표현을 하나에 처리해도 문제가 발생하지 않고 생산성도 더 좋을 수 있으나 대규모 개발의 경우 각 기능을 확실히 나눠야만 개발자와 디자이너의 업무를 분리하여 프로그램의 유연성을 보장하고 확장성, 재사용성을 높일 수 있다
많은 시행착오 끝에 잘 구축된 컨트롤러들이 재활용되며 웹 프레임워크 형태로 보급됨
'IT > Spring' 카테고리의 다른 글
DAL / BLL / PL 패턴, 구조란? (0) | 2017.11.08 |
---|---|
Eclipse Project Import 하는 법 (0) | 2017.11.07 |
JUnit과 Spring-test (0) | 2017.10.31 |
Maven oracle jdbc 연결하기 (0) | 2017.09.12 |