-
인턴 Day08 (MVC 패턴 / Spring에서 MVC구조)인턴일지 2022. 5. 3. 11:21
0. Day08
- 배운 것
1. MVC패턴
2. Spring에서 MVC구조
1. MVC 패턴이란
- Model, View, Controller의 약자
- 하나의 앱, 프로젝트를 구성할때 그 구성요소를 3가지 역할로 구분
- 사용자가 Controller로 조작하면, Controller는 Model을 통해 데이터를 가져오고, 그 정보를 바탕으로 시각적인 표현을 View가 제어해서 사용자에게 전달하는 방식
1.Model
애플리케이션의 정보, '데이타', 데이타베이스,
처음의 정의하는 상수, 초기화값, 변수 등을 뜻합니다.
또한 이러한 DATA, 정보들의 가공을 책임지는 컴포넌트를 말합니다
ex) 웹에서 적용할때 db
2.Conroller
사용자가 접근한 url에 따라서 사용자의 요청사항을 파악한 후,
그 요청에 맞는 데이터를 모델에게 의뢰하고, 데이터를 view에게 반영하는 역할
ex) 웹에서 적용하면 js
3. View
클라이언트측 기술
ex) 웹에서 적용하면 html/css/javascript
MVC패턴을 사용하는 이유?
서로 분리되서 각자 역할에 집중할 수 있게끔 해서 유지보수, 확장성, 유연성 증가
2. Spring에서 MVC구조
기존의 MVC패턴를 적용한 스프링프레임워크의 MVC구조이다.
똑같이 Model, View, Controller로 구분되긴 했지만, 스픙리프레임워크에서 model은 DAO, DTO, Service로 나뉜다.
출처 : https://m.blog.naver.com/jysaa5/221751719334
그래서 MVC구조 기반의 데이터흐름을 보면 이렇다.
REST API에 의해서 URL을 호출받게 되면 -> Contoller가 요청사항을 파악한 뒤
-> 상속받고 있는 서비스가 비즈니스 로직을 수행한다.
-> 서비스는 해당 로직을 처리하기 위해 DAO에 메소드를 호출하고,
-> DAO는 DB에 접근해서 데이터를 조작한 뒤 쿼리결과를 다시 서비스에게 전달한다
-> 다시 서비스는 View에게 데이터나 최종결과를 리턴하면서 최종사용자에게 보여지게 된다
하나하나 각 기능을 살펴보면 이렇다.
1.Controller
클라이언트에서 요청이 들어올때, 해당요청을 수행할 비즈니스 로직을 제어하는 객체.
스프링에서는 서비스 레이어를 만들어 요청사항을 세분화한다.
*비즈니스로직 : 실제 구현을 위해 설계된 부분으로 데이터를 처리하는 코드라고 보면 된다.
2.Service
세분화된 비즈니스 로직을 처리하는 객체
Contoller가 요청을 받으면 적절한 서비스에 전달하고, 전달받은 서비스는 비즈니스 로직을 처리한다
DAO로 데이터베이스에 접근하고, DTO로 데이터를 전달받은 다음, 처리를 수행하고 반환한다
즉, DAO의 CRUD를 조합해서 사용하는
3.DAO(Data Access Object)
DB에 접근하는 객체.
DB를 사용해 데이터를 조회하거나 조작한다 (CRUD)
4. DTO(Data Transfer) 또는 VO(Value Obejct)
각 계층간 데이터교환을 위한 자바객체.
이 객체는 데이터를 각 레이어간에 전달한다.
따로 로직을 가지고 있지 않고 객체의 속성과 getter, setter만 가지고 있다.
계층간에 데이터를 교환하기 위한 자바빈즈(Java Beans)를 의미한다.
데이터베이스에서 데이터를 얻어 Service나 Controller에게 보내서 매핑하기 위한 데이터객체.
'인턴일지' 카테고리의 다른 글
인턴 Day11 (스프링 프로젝트 게시판 목록, 글쓰기, 수정) (0) 2022.05.03 인턴 Day10 (스프링 프로젝트 로그인 회원가입) (0) 2022.05.03 인턴 Day07 (스프링 레거시 프로젝트 시작) (0) 2022.05.03 인턴 Day06 (datatables) (0) 2022.05.03 인턴 Day05 (Html name,id tag / 에러 종류 ) (0) 2022.05.03