[Node.js] Sequelize 기초 및 개념
ORM
Object Relational Mapping의 약자로 객체와 관계형 데이터베이스의 데이터를 자동으로 매핑해주는 것
SQL query가 아닌 직관적인 코드로 데이터를 조작할 수 있어 객체 지향 프로그래밍에 집중할 수 있다.
Sequelize
MySQL, MaraiDB, MS SQL 등 관계형 데이터베이스를 위한 promise 기반 Node.js ORM 도구
promise 기반으로 구현되었기 때문에 비동기 로직을 편리하게 작성할 수 있다.
Sequelize 설치
npm install sequelize sequelize-cli mysql2 // sequelize 설치
sequelize init // sequelize 초기화
sequelize init을 완료하면 해당 작업 경로에 config, migrations, models, seeders와 같은 폴더들이 생긴다.
.
├── config
├── migrations
├── models
├── seeders
config : 데이터베이스 설정 파일, 사용자 이름, DB 이름, 비밀번호 등의 정보가 들어있음
migrations : 데이터베이스의 변화하는 과정들을 추적해나가는 정보로 실제 데이터베이스에 반영할 수 있음
models : 데이터베이스 각 테이블의 정보 및 필드 타입을 정의하고 하나의 객체로 만들어 사용
seeders : 테이블에 기본 데이터를 넣을 때 사용
model 생성
sequelize model:generate --name Customer --attributes id:integer,name:string, email:string, phone:string, address:string
model 옵션
type - DataTypes : STRING, INTEGER, FLOAT, DOUBLE, BOOLEAN ...
allowNull - Boolean : Null 허용 여부 (default: true)
defaultValue - any : 기본값 설정(default: null)
unique - Boolean : 유일한 값 여부 (default: false)
primaryKey - Boolean : primary key 여부 (default: false)
autoIncrement - Boolean : 자동으로 값을 1씩 증가 (default: false)
model 예시
customer.init({
id: { type: DataTypes.INTEGER,
allowNull: false,
primaryKey: true,
autoIncrement: true},
name: { type: DataTypes.STRING, allowNull: false },
email: { type: DataTypes.STRING, allowNull: false },
phone: { type: DataTypes.STRING, allowNull: false },
address: { type: DataTypes.STRING, allowNull: true }
}, {
sequelize,
timestamps: false,
modelName: 'customer',
});