1. What is ORM?
ORM은 Object Relational Mapping 즉, 객체 - 관계 매핑의 줄임말이다.
객체-관계 매핑이란 객체 지향 프로그래밍에서 구현한 클래스와 RDB(Relational DataBase)에서 테이블을 매핑(연결)하는 것을 의미한다.
이 연결을 위해 필요한 기능을 제공하는 것이 ORM이다.
따라서 ORM을 이용하면 따로 SQL문을 짤 필요 없이 객체를 통해 간접적으로 데이터베이스를 조작할 수 있게 된다.
2. Sequelize ORM
Sequelize는 Postgres, MySQL, MariaDB, SQLite 등을 지원하는 Promise에 기반한 비동기로 동작하는 Node.js ORM이다.
2 - 1) model
모델은 Sequelize의 본질이다.
모델은 데이터베이스에서 하나의 테이블을 나타낸다.
Sequelize에서 내가 만든 모델은 Model이라는 것을 상속하는 클래스다.
이 모델을 이용하여 실제 데이터베이스에 존재하는 테이블에 CRUD 할 수 있다.
2 - 2) migration
Git을 사용하여 코드의 변경 사항을 관리하는 것처럼 마이그레이션을 사용하여 데이터베이스의 변경 사항을 추적할 수 있다.
마이그레이션을 통해 기존 데이터베이스를 다른 상태로 또는 그 반대로 전송할 수 있다.
상태 전환은 마이그레이션 파일에 직접 작성할 수 있다.
그리고 새 상태로 전환하는 방법과 이전 상태로 돌아 가기 위해 변경 사항을 되돌리는 방법을 설명할 수 있다.
또한 마이그레이션을 다루기위해선 Sequelize CLI가 필요하다.
CLI는 마이그레이션 및 프로젝트 부트 스트랩에 대한 지원을 제공한다.
마이그레이션은 마이그레이션을 실행하고 취소하는 기능을 의미하는 두 가지 기능인 (up/down)을 내보내는 자바스크립트 파일이다.
이러한 함수를 직접 정의해야하지만 수동으로 호출하지는 않고 CLI에 의해 자동으로 호출할 수 있다.
이러한 함수에서는 sequelize.query 및 Sequelize가 제공하는 다른 메서드를 사용하여 필요한 쿼리를 간단히 수행해야 한다.
*참고 : sequelize.org/master/
Manual | Sequelize
Constraints & Circularities Adding constraints between tables means that tables must be created in the database in a certain order, when using sequelize.sync. If Task has a reference to User, the User table must be created before the Task table can be crea
sequelize.org
'CodeStates' 카테고리의 다른 글
MVC Design Pattern (0) | 2021.03.03 |
---|---|
IM 35일차 (nodemon & Debugging for node.js) (0) | 2021.02.15 |
IM 32일차 (Postman 사용법) (0) | 2021.02.12 |
IM 31일차 (MIME type 과 HTTP headers 의 Content-Type) (0) | 2021.02.11 |
IM 26일차 (CORS) (0) | 2021.02.06 |