Sequelize란 무엇인가?
Sequelize는 Node.js 환경에서 사용되는 프라미스(Promise) 기반 ORM(Object-Relational Mapping) 라이브러리입니다. PostgreSQL, MySQL, MariaDB, SQLite, Microsoft SQL Server 등 다양한 관계형 데이터베이스를 지원하며, SQL 쿼리를 직접 작성하지 않고도 자바스크립트 객체를 통해 데이터베이스를 손쉽게 다룰 수 있게 해줍니다.
Sequelize의 대표적인 기능은 다음과 같습니다.
트랜잭션(Transaction) 지원
테이블 간 관계(Relations) 정의
즉시 로딩(Eager Loading) 및 지연 로딩(Lazy Loading)
읽기 복제(Read Replication) 등 다양한 고급 기능
Sequelize로 MySQL에 연결하기
Node.js 애플리케이션과 MySQL 데이터베이스를 연동하려면 먼저 Sequelize를 통해 연결을 설정해야 합니다. 연결이 완료되면 프로젝트 구성을 위해 아래 세 개의 파일이 필요합니다. 각 파일은 반드시 해당 폴더 안에 생성해 주세요.
SequelizeDemo > application.js
애플리케이션의 루트 파일로, 실제 실행 로직이 담깁니다.SequelizeDemo > utils > database.js
MySQL 접속에 필요한 모든 연결 정보를 담당합니다.SequelizeDemo > models > user.js
모델(Model) 정의 정보가 들어가는 파일입니다.
실습 예제
1. database.js 설정
먼저 데이터베이스 연결 정보를 입력합니다.
const Sequelize = require('sequelize')
const sequelize = new Sequelize(
'YOUR_DB_NAME', // 데이터베이스 이름
'YOUR_DB_USER_NAME', // 사용자 이름 (예: root)
'YOUR_DB_PASSWORD', // 비밀번호
{
dialect: 'mysql',
host: 'localhost'
}
);
module.exports = sequelize위 코드에서 자신의 데이터베이스 이름, 사용자 이름, 비밀번호를 실제 값으로 변경해 주세요.
2. user.js 설정 (모델 정의)
이 파일에서는 모델과 테이블 간의 매핑을 정의합니다.
const Sequelize = require('sequelize')
const sequelize = require('../utils/database')
const User = sequelize.define('user', {
// 첫 번째 컬럼: user_id
user_id: {
// 정수(Integer) 타입
type: Sequelize.INTEGER,
// 값 자동 증가
autoIncrement: true,
// NULL 허용 안 함
allowNull: false,
// 사용자를 고유하게 식별하는 기본 키
primaryKey: true
},
// 두 번째 컬럼: name
name: { type: Sequelize.STRING, allowNull: false },
// 세 번째 컬럼: email
email: { type: Sequelize.STRING, allowNull: false },
// 타임스탬프 컬럼
createdAt: Sequelize.DATE,
updatedAt: Sequelize.DATE,
})
module.exports = User3. application.js 설정 (테이블 생성)
모델을 기반으로 실제 테이블을 생성할 때는 두 가지 방식 중 하나를 선택할 수 있습니다.
sync() 메서드 — 모델이 존재하지 않을 때만 새로 생성합니다. 이미 모델이 존재하면 기존 모델을 덮어쓰지 않습니다.
sync({ force: true }) 메서드 — 모델이 없으면 새로 생성하고, 이미 존재한다면 기존 모델을 삭제한 뒤 덮어씁니다.
// 데이터베이스 연결 불러오기
const sequelize = require('./database')
// User 모델 불러오기
const User = require('./user')
// user 모델에 정의된 모든 테이블 생성
sequelize.sync()
// user.js 파일을 수정한 뒤 아래 코드를 실행하면
// 기존 테이블이 덮어써지는지 확인할 수 있습니다.
sequelize.sync({ force: true })실행 결과
위 프로그램을 실행하면 다음과 같은 출력 결과를 확인할 수 있습니다.
C:\Users\SequelizeDemo> node app.js Executing (default): CREATE TABLE IF NOT EXISTS `users` (`user_id` INTEGER NOT NULL auto_increment , `name` VARCHAR(255) NOT NULL, `email` VARCHAR(255) NOT NULL, `createdAt` DATETIME, `updatedAt` DATETIME, PRIMARY KEY (`user_id`)) ENGINE=InnoDB; Executing (default): SHOW INDEX FROM `users`
실행이 완료되면 MySQL 데이터베이스를 열어 확인해 보세요. 위에서 정의한 대로 users 테이블이 성공적으로 생성된 것을 볼 수 있습니다.