[TIL] 20210525_MVC 패턴, ORM
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 패턴으로 프로젝트를 진행하면 됩니다!!
Author And Source
이 문제에 관하여([TIL] 20210525_MVC 패턴, ORM), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@still3028/TIL-20210525MVC-패턴-ORM저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)