2020. 11. 22. 23:28ㆍBACKEND/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의 정의 방법과 실제로 사용하는 방법에 대한 포스팅을 작성해보겠습니다 ~.~
'BACKEND > Node' 카테고리의 다른 글
Sequelize, 로그 파일 관리하기 (4) | 2020.12.13 |
---|---|
Node.js + Swagger, 어렵지 않게 사용하기 (3) | 2020.12.06 |
Express + Multer, 어렵지 않게 사용하기 - S3 (4) | 2020.06.03 |
Express + Multer, 어렵지 않게 사용하기 (10) | 2020.05.27 |
Express + passport, 어렵지 않게 사용하기 2 (0) | 2020.04.28 |
Backend Software Engineer
𝐒𝐮𝐧 · 𝙂𝙮𝙚𝙤𝙣𝙜𝙨𝙪𝙣 𝙋𝙖𝙧𝙠