[DB] MVC 패턴과 Sequelize ORM

somin·2021년 8월 31일
0

Database

목록 보기
5/8

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. 공식 문서

profile
✏️

0개의 댓글