MVC 패턴
- Model-View-Controller의 약자로 어플리케이션을 세 가지의 역할로 구분한 개발 방법론
- React 단방향 데이터 흐름, Redux Flux 패턴 등과 같이 소프트웨어 설계와 관련된 패턴
- 사용자가 Controller를 조작하면 Controller는 Model을 통해서 데이터를 가져오고 그 정보를 바탕으로 시각적인 표현을 담당하는 View를 제어해서 사용자에게 전달
장점
: 서로가 분리되어 각자의 역할에 집중할 수 있기 때문에 유지보수성, 앱의 확장성, 유연성이 증가하고 중복코딩의 문제점 해결
1. Model
- 어플리케이션의 정보, 데이터를 나타냄
- 데이터베이스로부터 값을 가져올 수 있음
- 데이터베이스의 값을 Controller로 전달 : 데이터베이스로부터 값을 가져올 수 있으며, Controller와도 관계를 맺음
2. View
- UI요소들을 나타내며 데이터 및 정보의 출력을 담당
- 직접적으로 사용자가 볼 수 있는 공간
3. Controller
- Model과 View를 연결하는 다리 역할
- Model과 View는 변경 사항에 대해 알리고 변경사항을 받는 것만 알 수 있는데, Controller는 양쪽을 모두 알고있는 상태에서 서로의 변경 사항을 전달
ORM
- Object-Relational Mapping의 약자로 객체(클래스)와 관계(관계형 데이터 베이스)와의 설정을 의미
- Object와 DB데이터에서 매핑의 역할 수행
- 객체간의 관계를 바탕으로 SQL을 자동 생성하여 객체 모델과 관계형 모델간에 발생하는 불일치 해결
*객체 지향 프로그래밍은 클래스를, 관계형 데이터 베이스는 테이블을 사용하기에 불일치 발생
- ORM을 이용하면 관계형 데이터베이스에 있는 엔티티, 레코드 등에 접근할 때 마치 자바스크립트의 객체나 클래스를 다루듯 취급할 수 있음
*sql문이 없더라도 데이터베이스에 접근 가능
- Sequelize가 대표적
Sequelize
- 프로미스 기반의 Node.js ORM
- MySQL, PostgreSQL, MariaDB, SQLite, MSSQL을 지원
1. Sequelize 설치
npm install --save sequelize
2. Migrations 세팅
- 마이그레이션 : 데이터를 선택, 준비, 추출 및 변환하여 한 컴퓨터 저장 시스템에서 다른 컴퓨터 저장 시스템으로 영구적으로 전송하는 프로세스
*스키마 변경에 따른 데이터 이주(migration)를 의미
- Sequelize-cli : 마이그레이션을 할 수 있도록 돕는 툴
*CLI에서 모델을 생성해주거나, 스키마 적용을 할 수 있도록 해줌
1) Sequelize-cli 설치
npm install --save-dev sequelize-cli
2) Project bootstrapping
npx sequelize-cli init
3) Creating the first Model (and Migration)
npx sequelize-cli model:generate --name User --attributes name:string,visits:integer,email:string
- name: 모델의 이름
- attributes: 모델 내의 필드, 해당 필드의 속성 등을 설정
- models 폴더와 migrations 폴더 자동 생성
*migration:generate
: migrations 파일만 생성
4) Running Migrations
npx sequelize-cli db:migrate
- 데이터베이스에 해당 테이블 생성
- mysql로 테이블 확인가능
5) Undoing Migrations
npx sequelize-cli db:migrate:undo
npx sequelize-cli db:migrate:undo:all
References
1. MVC 패턴
2. 공식 문서