ORM Sequelize에 대해서 알아보자

cptkuk91·2022년 6월 5일
1

Algorithm

목록 보기
10/161
post-custom-banner

ORM이란?

데이터베이스를 조작하기 위해 SQL 문을 작성해야 합니다. 하지만 SQL 문법을 코드와 함께 작성하면 가독성이 떨어집니다. 이런 문제를 해결하기 위해 ORM을 사용합니다.

Object Relational Mapping은 객체(Object)와 관계(Relation)를 맵핑(Mapping)하여 비즈니스 로직에 집중할 수 있도록 데이터 처리를 도와줍니다.

ORM을 사용하면 DBMS에 종속되지 않으며 생산성, 독립성, 가독성 및 유지보수 측면에서 장점이 있습니다. 하지만 Query가 복잡해질수록 오히려 생산성이 떨어지는 단점도 존재합니다.

Sequelize란?

Node에서 가장 많이 사용되는 ORM입니다. Promise를 기본으로 동작하기 때문에 비동기 코드를 보기 좋게 작성할 수 있습니다.

Sequelize 설치하기

npm install --save sequelize mysql
npm install -g sequelize-cli

Sequelize cli를 통해서 migration, seeder, model의 초기 설정을 할 수 있습니다.
(migration, seeder, model 폴더는 직접 생성하는 게 아닙니다.)

Sequelize Select 예시

ex) User 전체 데이터 조회하기

models.User.findAll()
  .then(results) {
     res.json(results);
  })
  .catch(err => {
     console.error(err);
  });

Sequelize는 결과를 Promise로 리턴합니다. 따라서 findAll 역시 Promise를 리턴합니다. query의 결과는 then에서 출력하고 catch문을 통해 error handling을 할 수 있습니다.

Sequelize Insert 예시

models.User.create({userID: 'userId', password: 'Password'})
  .then(result => {
     res.json(result);
  })
  .catch(err => {
     console.error(err);
  });

create를 통해 Insert 된 row 정보를 추가할 수 있습니다.

Sequelize Update 예시

models.User.update({password: 'Password'}, {where: {userID: 'userId'}})
  .then(result => {
     res.json(result);
  })
  .catch(err => {
     console.error(err);
  });

update할 데이터를 입력해 userId의 비밀번호를 업데이트 할 수 있습니다.

Sequelize Delete 예시

models.User.destroy({where: {userID: 'userId'}})
  .then(result => {
     res.json({});
  })
  .catch(err => {
     console.error(err);
  });

destroy를 통해 데이터를 삭제할 수 있습니다. 중요한 부분은 where 조건을 입력해야 합니다. 조건이 없다면 테이블 모든 row가 삭제될 수 있습니다.

profile
메일은 매일 확인하고 있습니다. 궁금하신 부분이나 틀린 부분에 대한 지적사항이 있으시다면 언제든 편하게 연락 부탁드려요 :)
post-custom-banner

0개의 댓글