ORM (Object Relational Mapping) VS ODM (Object Document Mapping)
ORM : 코드의 객체 (object)와 데이터의 관계형 표현간에 변환(Mapping)이 가능
ODM : 코드의 객체와 데이터 문서(Document)의 변환(Mapping) 가능
What Is ORM
- 객체를 통해 간접적으로 DB를 다루는 방식
- 직접 SQL Query를 작성하지 않고 프로그래밍 언어를 이용하여 DB에 접근이 가능
- ORM을 이용해서 객체 간의 관계를 바탕으로 SQL을 자동으로 생성하여 불일치를 해결한다.
- ORM을 이용해서 SQL 문을 직접 작성하지 않고 엔티티를 객체로 표현할 수 있다.
- ORM을 이용해서 객체를 통해 간접적으로 데이터베이스**를 다룬다.
- 이를 통해 데이터베이스 세계와 프로그래밍 언어 사이의 개념의 간극을 줄여준다.
느슨하게 연결된, 테스트에 용이한 애플리케이션을 만들 수 있다.
장점
- 개발 코드와 DB의 종속성 분리 (참고.[[데이터의 종속성과 중복성]])
- 생산성 향상 및 유지보수가 용이
- 특정 DBMS에 종속적이지 않아 객체에만 집중 가능 (참고.[[객체지향 ( Object oriented ) VS 절차지향( Procedural )]])
- 다른 DBMS간에도 문법이 호환되어 교체시에 편리
단점
- Customizing 및 Debugging이 어려움
- 실행속도가 raw 방식보다 느림
- 복잡한 쿼리 작성이 어려움
지원
Express <> mySQL ORM 모듈 : Sequlize , TypeORM , Knex 등이 있음
Sequlize > PostgreSQL , mySQL , MariaDB, SQLite, MSSQL
TypeORM > MySQL, MariaDB, PostgreSQL, CockroachDB, SQLite,
MSSQL, Oracle, sql.js, MongoDB
Knex > PostgreSQL, MySQL, SQLite3
Sequelize
Node JS의 대표적은 ORM 라이브러리
- 시퀄라이즈(Sequelize)는 Node.js의 Module이다.
- 시퀄라이즈는 ORM 라이브러리이다.
- 시퀄라이즈는 SQL 작업을 쉽게 할 수 있도록 도와주는 라이브러리이다.
- 시퀄라이즈를 사용하면 자바스크립트 코드로 SQL을 제어할 수 있다.
- 시퀄라이즈로 MySQL, MariaDB, PostgreSQL, SQLite, MSSQL 등 다양한 RDBMS와 호환된다. (프로젝트를 다른 데이터베이스로 전환할 대 편리하다.)
- 시퀄라이즈(ORM)을 사용하는 이유는 위에서 살펴보았 듯 자바스크립트 구문을 알아서 SQL로 바꿔주기 때문이다.
- SQL 언어를 직접 사용하지 않아도 자바스크립트만으로 RDBMS를 조작할 수 있고, SQL을 몰라도 RDBMS를 어느 정도 다룰 수 있다.