본문 바로가기
카테고리 없음

MVC Design Pattern & Sequelize ORM

by 연제원 2021. 3. 7.

MVC Design Pattern 이란?

Model View Controller의 약자

소프트웨어 설계와 관련된 디자인 패턴으로, "흔히 사용되는" 설계 패턴을 의미한다.

 

Model

  • 어플리케이션이 "무엇"을 할 것인지를 정의

  • Database와 상호작용(CRUD Create Read Update Delete)

Controller

  • 모델이 “어떻게” 처리할 지를 알려주는 역할

  • 화면에서 사용자의 요청을 받아서 처리되는 부분을 구현되게 되며, 요청 내용을 분석해서 Model과 View에 업데이트 요청

  • 사용자로 부터의 입력 을 받고 Model 또는 View중개인 역할

View

  • 화면에 “무엇” 인가를 “보여주기 위한 역할”

  • 컨트롤러 하위에 종속되어, 모델이나 컨트롤러가 보여주려고 하는 모든 필요한 것들을 보여줌

 

장점

서로 분리되어 각자의 역할에 집중할 수 있게끔하여 유지보수성, 애플리케이션의 확장성, 유연성이 증가하고, 중복코딩이라는 문제점 또한 제거할 수 있다.

 

단점

View와 Model이 서로 의존성을 띄게 된다. 이는 애플리케이션이 커질수록 복잡해지고 유지보수가 어렵게 될 수 있다.

 


ORM 이란?

Object Relational Mapping의 약자

객체(클래스)와 관계(관계형 데이터 베이스)와의 설정을 의미한다. 우리가 객체를 통해 데이터베이스를 정의하거나 조작하면, ORM은 객체 간의 관계를 바탕으로 SQL을 자동 생성해 데이터베이스와 객체를 일치하도록 만들어준다.

즉, ORM을 이용해서 객체와 메서드로 간접적으로 데이터베이스를 다룰 수 있다.

 

 

Sequelize

스프린트를 통해 ORM 중 하나인 Sequelize를 이용해봤다.

공식문서에만 의존하며 진행했기에 정말 많이 힘들었지만, 구글 검색하기 이전에 공식문서를 제대로 파악하는 습관을 기르면 좋을 것 같다는 생각이 들었다.

 

Sequelize는 Node.js 기반의 ORM으로 MySQL뿐 아니라, PostgreSQL, MariaDB, SQLite, MS-SQL도 지원한다. Promise 기반의 ORM이기에 비동기 처리에 용이하다.

또한, Sequelize는 자체 cli를 지원한다. 즉, 명령어를 사용해 데이터베이스를 조작할 수 있게 해준다.

 

sequelize와 sequelize-cli를 설치하고 다음의 명령어를 실행하면 4개의 폴더가 생긴다. 이를 bootstraping이라 하고 프로젝트의 뼈대를 생성하는 작업이다.

$ npx sequelize-cli init

 

  • config 폴더 - DB에 연결하는 방법을 CLI에 알려구는 구성파일을 포함
  • models 폴더 - 프로젝트의 모든 model(테이블)을 포함
  • migrations 폴더 - DB를 개발자가 객체 형식으로 조작하는 모든 파일(로그)을 포함
  • seeders 폴더 - 테이블에 데이터를 채워넣는 모든 파일들을 포함

이후, migration과정을 통해 우리가 정의, 생성한 models와 migrations 폴더를 기반으로 데이터베이스를 생성, 조작한다. 즉, 객체를 바탕으로 데이터베이스를 일치시켜주는 과정이다.

댓글