데이터베이스 – MVC
MVC(Model-View-Controller)란 소프트웨어 설계와 관련된 디자인 패턴으로, 소프트웨어 공학에서의 "흔히 사용되는" 설계 패턴을 의미
→ Model과 Controller 사이, 그리고 Model이 데이터베이스와 어떤 방식으로 연결되는지가 중요
ORM: Model을 기술하는 도구
→ 데이터베이스 세계와 프로그래밍 언어 사이의 개념의 간극을 줄여 주는 역할
→ ORM을 이용하여 SQL 문을 직접 작성하지 않고 엔티티를 객체로 표현할 수 있다
→ 이를 통해 느슨하게 연결된, 테스트에 용이한 애플리케이션 개발 가능
{} ↔ ORM ↔ 관계형 DB
객체
학습 목표
* MVC 패턴
- 코드를 구분하여 작성하는 이유 이해하기(MVC 디자인 패턴)
- Model, View, Controller의 역할
* Cmarket Database(실습)
- Node.js 에서 SQL 쿼리
- 클라이언트 HTTP 요청에 따른 CRUD API 구현
* Advanced(심화 학습)
- ORM의 장점 이해
- Sequelize ORM 과 관련 CLI 툴 사용(with 공식문서)
→ Sequelize를 이용한 모델 작성
→ Sequelize를 이용한 마이그레이션
- 마이그레이션의 개념과 필요성
- Sequelize ORM을 통한 테이블 간 관계 표현(1:1, 1:N, N:N)
- MVC 디자인 패턴의 한계
MVC 디자인 패턴
일련의 소프트웨어가 돌아가는 방식에 대한 하나의 패턴(특정 라이브러리를 지칭x)
애플리케이션을 각 기능 별로 나누어서 짜는 것(Model, Controller, View)
![]() |
Model
데이터에 대한 정보를 가지고 있음(자신이 가지고 있던지, 데이터베이스와 연결되어 가지고 올 수 있든지)
→ 데이터베이스와 이야기(통신?)을 하면서 가지고 있는 데이터를 Controller와 이야기함
정리하자면,
- 데이터를 다룬다
- 데이터베이스와 상호작용
View
유저가 보는 화면을 보여주게 하는 역할(ex. html, css 와 같은…)
Controller하고만 이야기 한다
→ 그 뒤로 일어나는 일에 대해서는 모른다
→ 데이터를 받으면 그 것에 대한 그림을 그리는 데만 충실한 역할
→ 어떤 액션, 이벤트에 대한 input 값을 Controller에 전달
Controller
- 어떤 액션, 이벤트에 대한 input값을 전달 받은 경우(View로부터)
→ 이에 대한 가공 작업을 거친 후 Model에게 가공된 데이터를 전달 - 필요한 데이터를 Model로부터 전달 받은 경우
→ 모델로부터 전달받은 데이터를 View가 알아볼 수 있도록 가공 작업을 거친 후 View에게 전달
![]() |
MVC 디자인 패턴의 수도코드 예시
![]() |
Controller(controllers)에서는 Model(UserModel)에서 getProfile 메서드를 통해
id 값을 요청하고, Model에서는 db에게 쿼리문을 통해 해당 id에 대한 유저의 데이터를 조회(select)해서 데이터를 받아온다
이를 Controller에게 전달하고 Controller는 받은 데이터터를 profile이라는 변수에 담아, View(renderView)에게 전달한다
View는 전달받은 가공된 데이터를 통해 사용자가 보기 좋게, 가공하여 화면에 출력해 줌
→ 이와 같이 MVC 패턴으로 잘 짜여져 있다면(각 역할들의 의존성, 연결 구성 등) Scaling(스케일링)이나 코드 관리, 코드 가독성에서 큰 이득이 있다
'SE Bootcamp 내용 정리' 카테고리의 다른 글
인증/보안 - 기초 1: HTTPS, Hashing, Cookie, Session (0) | 2021.11.24 |
---|---|
데이터베이스 - MVC 패턴 연습 (0) | 2021.11.19 |
데이터베이스 - 관계형 데이터베이스 보충 내용 (0) | 2021.11.15 |
자료구조/알고리즘 - 중복 순열/순열/조합, DP의 알고리즘 예시 (0) | 2021.11.15 |
자료구조/알고리즘 - 정규표현식 (0) | 2021.11.11 |