Sequelize, 초기 설정

2020. 11. 22. 23:28BACKEND/Node

안녕하세요 ❗️

 

오늘은 오랜만에 서버 관련 게시글을 쓰려 합니다 ~.~

점점 ORM을 많이 사용하는 추세라고 하는데요.

Node.js 서버에서도 sequelize라는 ORM을 제공합니다.

오늘은 바로 그 Sequelize를 알아보도록 하겠습니다❗️ 

 

 

*****************  INDEX  *****************

 

1부

🚀 ORM ❓ 

🎯 Sequelize

🖍 Sequelize 설정

 

2부

Sequelize Model

3부

Use Sequelize

 

******************************************** 

 


Sequelize ❓ 

 

ORM은 Object-relational mapping의 약자입니다.

단어 그대로, 데이터베이스의 객체-관계를 매핑해주는 역할을 하죠.

 

그럼 여기서 말하는 객체는 무엇이고, 관계는 무엇일까요❓ 

아주 단순히 생각해서 관계형 데이터베이스의 개념이라고 생각하면 됩니다❗️

 

서버가 데이터를 처리하는 과정에서 ORM을 사용하게 되는데요.

기존에는 Raw query를 입력해서 데이터를 처리했습니다.

 

예를 들어 아래와 같은 쿼리문을 서버에서 직접 적어 데이터베이스에 접근했습니다.

 

SELECT first_name, last_name FROM user WHERE id=4;

 

그런데 ORM은 기존의 프로그램언어로 데이터 베이스에 접근할 수 있게 해줍니다.

예시로 곧 알아볼 Sequelize로 형태만 확인해볼까요❓ 

 

User.findOne({},{
  where: { id: 32 },
  attributes: ['first_name', 'last_name']
})

 

위의 형태로 작성할 수 있습니다.

 

 

✔️ ORM, 왜 사용할까

그렇다면 ORM을 사용하는 이유는 어떤 것이 있을까요❓ 

비즈니스로직에 더욱 집중할 수 있습니다.

스트링으로 작성하는 쿼리보다는 각각의 객체 형태로 접근하기 때문에 가독성을 높여줄 수도 있고, 

제가 생각인데 좀 더 보기가 좋은 것 같아요,,,ㅎㅎ

또, 객체들이 독립적이기 때문에 재사용에 용이하기도 하죠.

 

 

✔️ Sequelize

Sequelize는 Node.js 에서 사용할 수 있는 ORM입니다.

사용법이 꽤 간단해서 몇 번 사용해보면 이해가실거에요.

자, 이제부터 Sequelize에 대한 사용법을 확인해보겠습니다.

 

 

 

Sequelize 설정 

✔️ npm 설치

sequelize 설치는 아래와 같이 npm을 이용해서 설치합니다.

 

$ npm install --save sequelize sequelize-cli

 

--save 옵션은 dependencies에 모듈을 추가하기 위한 옵션이기 때문에 생략해도 됩니다. 

dependencies가 default...

 

설치를 했다면, 이번엔 자신이 사용할 데이터베이스에 맞게 모듈을 설치하세요

 

$ npm install --save pg pg-hstore # Postgres
$ npm install --save mysql2
$ npm install --save mariadb
$ npm install --save sqlite3
$ npm install --save tedious # Microsoft SQL Server

 

저는 mysql2를 사용했습니다 ~.~

 

자, 이번에는 Sequlize 를 프로젝트에 적용시켜볼게요.

 

$ sequelize init

 

위의 명령어를 입력하면 아래의 파일/디렉터리가 생성됩니다.

 

 

 


✔️  추가된 파일 확인

1. /config/config.json

config.json 파일에서 DB 커넥션 정보를 각 환경에 맞게 설정할 수 있습니다.

내용은 development, test, production의 설정이 있습니다.

배포 상황에 맞춰 따로 설정해주면 됩니다.

 

{
  "development": {
    "username": "데이터베이스 로그인명",
    "password": "비밀번호를 입력해주세요.",
    "database": "사용할 데이터베이스 이름",
    "host": "호스트 이름",
    "dialect": "사용할 dbms"
  },
  ...
}

 

dialect에는 mysql, mariadb, sqlite, postgres, mssql 등을 입력해주면 되겠죠?

 

 

 

2. models/index.js

models 폴더는 Model파일을 담습니다.

model은 객체 하나를 정의한 파일이라고 생각하셔도 됩니다 ~.~

 

models/index.js 는

- /config/config.json 파일의 설정 값을 읽어 sequelize를 생성합니다.

- models 폴더 아래에 존재하는 js 파일을 모두 로딩합니다.

- db 객체에 Model을 정의하여 반환합니다.

 

 

3. Migrations

테이블 컬럼을 추가/제거 할때 migrations 파일을 통해서 실제 DB에 반영합니다.

migration파일을 통해 롤백도 가능합니다.

 

 


4. Seeders

시드 데이터를 생성하는 곳입니다.

주로 샘플 데이터를 생성하고 지울때 사용합니다.

 

 

 

✔️ Sequelize connect

설치만 한다고 연결이 되지는 않는데요.

함수를 정의만 한다고 실행되지는 않죠?

위의 내용이 '정의'라면 아래의 간단한 추가 내용을 통해 '실행'할 수 있습니다.

 

프로젝트의 로더에 sequelize를 추가시켜줘야 합니다.

App.js 나 Loader폴더에 아래의 설정을 추가시켜줍니다.

 

const { sequelize } = require('./models');

sequelize.sync({ alter: false })
  .then(() => {
	  console.log('데이터베이스 연결 성공.');
  })
  .catch((error) => {
      console.error(error);
})

 

자, 이렇게 Sequlize의 설정을 끝냈습니다.

다음엔 Sequelize model의 정의 방법과 실제로 사용하는 방법에 대한 포스팅을 작성해보겠습니다 ~.~