Framework/Node.js

[Node.js] 시퀄라이저와 ORM, 프로젝트 템플릿

  • -
Node.js 공부하면서 시퀄라이저에 대해 알게되어, 공부한 내용을 정리한 글입니다.

시퀄라이저란?

시퀄라이저(Sequelize)는 Node.js에서 사용되는 ORM(객체 관계 매핑) 라이브러리 중 하나입니다. 

 

스프링을 아시는 분들은 ORM에 대해서 익숙하시겠지만, 지금까지 시퀄라이저 없이 Node.js 환경에서 api를 만들고 계셨더라면, ORM이라는 개념이 낯설 수 있습니다.

 

ORM 이란?

ORM은 Object-relational Mapping의 약자로 데이터베이스와 객체 지향 프로그래밍 언어 간의 상호 작용을 간소화하는 프로그래밍 기술로, 객체와 데이터베이스간의 패러다임 불일치를 해결하기 위해 도입되었습니다.

 

패러다임 불일치란 객체 지향 프로그래밍 언어에서 사용되는 데이터 모델과 관계형 데이터베이스의 데이터 모델 간에 발생하는 차이를 의미합니다. 

 

일반적으로 객체 지향 프로그래밍에서는 클래스와 객체를 사용하여 데이터와 해당 데이터에 대한 동작(메서드)을 캡슐화하고, 이러한 객체들 간의 관계를 표현합니다. 반면에 관계형 데이터베이스는 테이블과 행으로 데이터를 구조화하며, 데이터 간의 관계는 외래 키 등으로 정의됩니다.

 

ORM은 이러한 차이를 해결하기 위해 개발자가 객체 지향 프로그래밍 언어에서는 자연스럽게 다룰 수 있는 객체를 사용하여 데이터베이스와 상호 작용할 수 있게 해줍니다. 이를 통해 개발자는 SQL 쿼리를 직접 사용하는 대신, 객체 지향적인 방식으로 데이터를 다룰 수 있는 것입니다.

시퀄라이즈 사용하기

프로젝트 생성

먼저 Node.js 프로젝트를 만들어보겠습니다.

npm i express morgan nunjucks sequelize sequelize-cli mysql2


sequelize-cli는 시퀄라이즈 명령어를 실행하기 위한 패키지이고, mysql2는 MySQL과 시퀄라이즈를 이어주는 드라이버입니다. mysql 자체는 데이터베이스 프로그램이 아닙니다. 

npx sequelize init

 

위 명령어를 입력하면 config, models, migrations, seeders 폴더가 생성됩니다.

  • config 폴더: config/config.json은 데이터베이스 연결 설정을 담은 파일입니다. 만약 깃허브에서 애플리케이션을 관리한다면 config 폴더는 반드시 .gitignore 파일에 명시해야 합니다.
  • models 폴더: 이 폴더에는 시퀄라이즈 모델을 정의하는 파일들이 위치합니다. 모델은 데이터베이스와 연결되고, 각 모델 파일은 특정 테이블의 스키마를 정의합니다.
  • migrations 폴더: 데이터베이스의 스크마의 변경 사항을 관리하는 폴더입니다. 새로운 테이블을 추가하거나 스키마를 수정할 때 이 폴더에 마이그레이션 파일을 생성하고 실행합니다.
  • seeders 폴더: 테스트 데이터를 데이터베이스에 주입하는 용도로 사용되는 시더 파일을 저장하는 폴더입니다.

models 안에는 index.js가 생성됩니다. index.js를 아래 코드처럼 수정합니다.

왜냐하면 init 하여 생성한 index.js 코드는 오류가 발생할 수 있기 때문입니다.

const Sequelize = require('sequelize');

const env = process.env.NODE_ENV || 'development';
const config = require(__dirname + '/../config/config.json')[env];
const db = {};

const sequelize = new Sequelize(config.database, config.username, config.password, config);

db.sequelize = sequelize;

module.exports = db;

 

 

 

 

Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.