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를 어느 정도 다룰 수 있다.