국비지원 공부 정리/Mysql

Node js - Sequelize

worldstroy 2025. 3. 27. 14:25

Sequelize 란?

• 자바스크립트 구문을 알아서 SQL로 변환해준다.
• DB 작업을 쉽게 할 수 있도록 도와주는 ORM(객체 관계 매핑) 라이브러리 중 하나
• Node js에선 Sequelize과 Spring boot에선 JPA, Mybatis가 해당 매핑을 담당하는 라이브러리

 

Sequelize 실행 시 준비 사항

1. 아래의 명령어를 실행하여, Sequelize를 프로젝트에 연결시킨다.
npm install sequelize : 시쿼라이즈를 실제 프로젝트에 설치하는 명령어
npm install sequelize-cli : 시퀄라이즈 명령어를 실제 실행하는 명령어
npm install mysql2 : mysql을 실제 연결하여 실행하는 명령어
2. 아래의 명령어를 실행하여 Sequelize를 사용할 초기 상태를 세팅한다.
npx sequelize init

 


 

 

Sequelize를 실제 실행하는 방법

 

(1) config 폴터 생성 

 

 

dotenv 패키지를 설치하여 env에 있는 데이터 정보를 불러오는 방식이 훨씬 보안성 높은 사용 방식이다. 

 

(2) models/index.js 파일 생성

 

 

(3) 파일 명에 맞는 model을 설계하고 index에 추가

 

 

sequelize.define의 첫번쨰 인자 모델 이름 설정
sequelize.define의 두번쨰 인자 컬럼을 정의함
이때 컬럼명은 실제 DB 자료형과 다르니 주의하자.
sequelize.define의 세번쨰 인자 모델 옵션 정의

Sequelize 자료형 (DataTypes)

Sequelize 자료형 (DataTypes) MySQL 자료형
Sequelize.STRING VARCHAR(255)
Sequelize.STRING(1234) VARCHAR(1234)
Sequelize.TEXT TEXT
Sequelize.TEXT('tiny') TINYTEXT
Sequelize.INTEGER INTEGER
Sequelize.DATE DATETIME

 

 

Sequelize의 쿼리문

 

findAll() 전체 칼럼정보를 가져온다.
findOne() Where문을 만족하는 칼럼정보 하나를 가져온다.
create() 칼럼을 추가한다.
update() 칼럼의 정보를 업데이트한다.
destroy() 칼럼을 정보를 삭제한다.
모든 Sequelize의 함수들은 return 값이 Promise

 

 


 

Relationship?

 

• 테이블들은 서로 관계를 맺을 수 있으며, 이를 통해 복잡한 데이터 구조를 단순화하고 관리

 

 

Sequelize에서의 1:1 관계

 

• 1:1 관계는 하나의 레코드가 다른 하나의 레코드와 관련되어 있는 관계를 의미
• 이 관계에서 각 레코드는 서로 한 가지 정보만을 공유
• 예시) 사용자와 프로필, 직원과 연차, 주문과 송장

 

 

• hasOne: 한 모델이 다른 모델을 가리키는 1:1 관계를 설정하는 데 사용
 • belongsTo: 다른 모델이 한 모델을 가리키는 1:1(1:다) 관계를 설정하는 데 사용

 

Sequelize에서의 1:다 관계

 

• 1:다 관계는 한 쪽 레코드가 다른 쪽 레코드 여러 개와 관련되어 있는 관계
• 보통 부모 엔티티와 자식 엔티티 사이의 관계를 나타내는데 사용
• 예시) 부서와 직원, 고객과 주문, 학교와 학생

 

 

 

• hasMany: 한 개의 모델(테이블)이 다른 모델과 1:n 관계를 가질 때 사용
• belongsTo: 다른 모델이 한 모델을 가리키는 1:1(1:다) 관계를 설정하는 데 사용

Sequelize에서의 다:다 관계

• 다:다 관계는 양쪽 모두 서로가 서로에게 여러개씩  관계를 가진다는 의미
• 이 관계는 중간 테이블을 사용하여 구현
• 예시) 학생과 과목, 주문과 제품, 배우와 영화

 

• belongsToMany: 다:다 관계를 설정할 때 사용되는 메서드

'국비지원 공부 정리 > Mysql' 카테고리의 다른 글

데이터 제어어 (DCL)  (0) 2025.03.26
JOIN  (0) 2025.03.26
MYSQL - DML  (0) 2025.03.26
데이터베이스에서 쓰이는 데이터 형식  (0) 2025.03.26
MySQL - DDL  (0) 2025.03.26