[Node.js] Sequelize

Hyunji·2022년 3월 12일
1

공부

목록 보기
11/35
post-thumbnail

Sequelize 란?

Node.js 에서 MySQL을 쉽게 다룰 수 있도록 도와주는 ORM 라이브러리
MySQL, PostgreSQL, MariaDB, SQLite 등 많은 RDBMS를 지원하고 Promise 기반으로 구현되었기 때문에 비동기 로직을 편리하게 작성할 수 있다.

ORM 이란?
ORM : Object-Relational Mapper
데이터베이스와 객체 지향 프로그래밍 언어간의 호환되지 않는 데이터를 변환하는 프로그래밍 기법.

객체 지향 프로그래밍은 클래스를 사용하고 관계형 데이터 베이스는 테이블을 사용한다.
여기서 객체 모델과 관게형 모델간의 불일치가 존재 하는데, 
이 객체간의 관계를 바탕으로 SQL을 자동으로 생성하여 불일치를 해결하는 것이 ORM이다

장점

  • ORM을 이용하면 쿼리가 아닌 메서드로 데이터를 조작할 수 있다
  • 쿼리를 함수와 값으로 표현할 수 있어 텍스트로 쿼리를 직접 만드는 것보다 코드를 작성하거나 읽기 더 쉬워진다
  • 자동적으로 인젝션을 막아주는 기능이 있다
  • 사람의 실수로 버그나 해킹가능한 요소를 만들 가능성이 많이 줄어든다

단점

  • 쿼리문보다 퍼포먼스가 느리다
  • 서비스가 복잡해 질수록 ORM으로 할 수 있는 작업의 범위의 한게계가 있다

Express에 개발환경 세팅하기

npm i sequelize mysql2

명령어를 이용해 sequelize와 mysql을 설치 해준다

npm i -g sequelize-cil

sequelize에 대해 쉽게 접근하기 위해 sequelize-cil도 설치 해준다

sequelize init

초기화를 진행한다

초기화를 진행해주면 models, migrations, seeders 폴더가 생성된다

Sequelize CRUD

row 생성

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

Person.creat({
	name: "Tony",
	age: 25
});
  • row를 생성하려면 create 키워드를 사용하면 된다

조회

1. Person.findAll({});
2. Person.findAll({
	where: {
    	name: "Peter"
    }
});
  • 해당하는 모든 row를 조회한다면 findAll
  • 하나의 row만 찾는다면 find 사용
  • findAll 에는 옵션으로 SQL문 처럼 where, order 등이 있다

수정 & 삭제

Person.update({          // update
	name: "Logan",
}, {
  where: { id:3 }
});

Person.destroy({		// delete
	where: { id: 4 }
});

https://www.npmjs.com/package/sequelize
https://sequelize.org/
https://berkbach.com/node-js%EC%97%90%EC%84%9C-mysql-%EC%82%AC%EC%9A%A9%ED%95%98%EA%B8%B0-1-b4b69ce7433f

profile
성장중인 개발자

0개의 댓글