[TIL] 20210525_MVC 패턴, ORM

BANSEOK SUH·2021년 5월 25일
0

TIL

목록 보기
20/22

MVC 패턴

MVC 패턴은 디자인 패턴 중 하나입니다. 특히 사용자와 상호작용을 하는 애플리케이션을 개발할 때 사용됩니다.
Model, View, Controller의 약자이며, 하나의 애플리케이션을 세 가지의 큼지막한 역할로 구분한 패턴입니다.

Model

  • 애플리케이션의 데이터를 내타냅니다.
  • 데이터베이스에서 받아온 데이터를 컨트롤러에 전달을 해주고, 컨트롤러에서 받아온 데이터를 데이터베이스에 전달해줍니다.
  • 데이터베이스와 컨트롤러 사이의 중개자 역할을 하네요.

View

  • 사용자가 보는 화면을 보여주는 역할을 합니다. 최종 사용자에게 "어떤 것"을 UI로 보여주는 것이죠.
  • 하지만 View는 사용자와 대화를 하지 않습니다. 단순히 보여주기만 하는 View는 사용자를 일방적으로 바라보고 있습니다.

Controller

  • Controller는 View에서 받은 데이터를 가공해서 Model에게 던져줍니다. 또한 Model에게서 받은 데이터를 View에게 전달해주기도 하죠.
  • 쉽게 말해 데이터 가공소라고 생각하시면 됩니다.

아래의 그림은 사용자가 브라우저를 통해 애플리케이션과 상호작용을 하는 흐름도입니다.

사용자가 브라우저를 통해 요청을 보내면, 요청에 맞게 라우팅이 되고, 해당 컨트롤러모델을 사용하여 알맞은 비즈니스 로직을 수행합니다. 선택된 는 사용자에게 알맞은 결과 화면을 보여주는데, 이 때 사용자에게 보여줄 데이터는 컨트롤러를 통해 전달받습니다.


*비즈니스 로직: 사용자의 요청에 따른 결과물을 만들어내기 위한 일련의 내부 작업들을 의미합니다.


ORM (Object-Relational Mapping)

관계형 데이터베이스와 자바스크립트 객체 사이의 통역사 역할을 하는 툴입니다.

쿼리문을 통해 데이터베이스와 상호작용을 할 수도 있지만, ORM이라는 툴을 사용해서 자바스크립트 객체의 모양으로도 상호작용을 할 수 있습니다.


대표적인 툴로는 Seqeulize가 있는데, 그것의 사용법을 살펴보겠습니다.

Sequelize

프로미스 기반의 nodejs ORM 툴입니다.
동기처리를 위해서 then chaining을 사용하거나 async/await을 사용해야겠죠?


ORM 설정

다음의 명령어로 Sequelize 설치 및 초기설정을 해줍니다.

// Sequelize 설치
$ npm install --save sequelize

// Sequelize-cli 설치 : 마이그래이션을 할 수 있도록 돕는 툴로, cli에서 모델을 생성해주거나, 스키마 적용을 할 수 있도록 돕습니다.
$ npm install --save-dev sequelize-cli

// cli를 통해 ORM을 사용할 수 있도록 bootstraping을 해줍니다.
// 프로젝트 초기 단계를 자동으로 설정할 수 있도록 해줍니다.
$ npx sequelize-cli init

부트스트래핑을 완료하면, 해당 프로젝트에 다음의 파일 및 폴더들이 생성됩니다.

config/config.json
models/
migrations/
seeders/

모델 생성

프로젝트에 모델을 모실 준비가 완료됐으니, cli를 통해 모델을 만들 차례입니다.

다음과 같은 명령어로 cli에서 모델을 만들어줍니다.

npx sequelize-cli model:generate --name User --attributes firstName:string,lastName:string,email:string

id, createdAt, updatedAt 필드는 자동으로 생성되기 때문에, 그 외의 필요한 필드들만 생성해줍니다.

위 명령어로 모델을 생성하면, 해당 프로젝트에 migration/생성날짜-create-모델이름.js 파일과 models/모델이름.js 파일이 생성됩니다.


마이그레이션

다음과 같은 명령어로 마이그레이션을 실행해줍니다.

npx sequelize-cli db:migrate

마이그래이션, 부트스트래핑에 대해서는 별도로 포스팅해야겠습니다.


여기까지가 Sequelize를 사용할 준비를 마친 것입니다. 위와 같이 초기 셋팅을 해주고, Controller 작성 및 Router 연결을 함으로써 MVC 패턴으로 프로젝트를 진행하면 됩니다!!


profile
HelloBanny

0개의 댓글