ORM(Object Relational Mapping)
-
ORM(Object Relational Model)은 사물을 추상화시켜 이해하려는 OOP적 사고방식과 DataModel을 정형화하여 관리하려는 RDB(관계형 데이터베이스(Relational DataBase)) 사이를 연결할 계층의 역할로 제시된 패러다임으로 RDB의 모델을 OOP에 엔티티(Entity) 형태로 투영시키는 방식을 사용한다.
-
즉, 객체(Object)와 데이터베이스(DataBase)간에 연결 역할을 해주는 것이 ORM이다.
[
]
ORM의 등장배경
-
ORM을 사용하지 않을 경우 개발자가 개발을 위하여 데이터베이스(DataBase)에 접근하기 위해서는 SQL(Structured Query Language) 쿼리(Query)문을 직접 만들었다.
-
SQL(Structured Query Language)문법을 알고 있어야하는 문제가 있었다.
-
쿼리문 작성시간이 오래걸려 개발이 지체되는 문제가 발생했다.
-
개발 코드와 데이터베이스(DataBase)가 서로 종속된다.
-
띠라서 위와 같은 문제점들이 생겨나기 시작했다.
-
이러한 문제점을 해결하기 위해 ORM이 등장하였고 ORM이 등장함으로서 SQL Query 문법에서 비교적 자유로워졌으며 개발 코드와 데이터베이스(DataBase)를 분리함으로써 객체지향의 의도에 부합하게 되었다.
ORM사용의 장점과 단점
장점
1. 개발의 생산성 향상
- 선언문, 할당, 종료 등과같은 부수적인 코드가 사라짐으로써 개발의 생산성 향상되었다.
2. 명확한 쿼리(Query) (버그와 실수 감소)
- 코드가 간결하고 직관이기 때문에 가독성을 높여준다.
3. 데이터베이스(DataBase) 의존성 감소
- 대부분 ORM 솔루션이 특정 데이터베이스(DataBase)에 종속적이지 않다.
- 개발자는 데이터베이스(DataBase)에 상관없이 객체(Object)에만 집중할 수 있다.
ORM의 장점
-
즉, ORM이 도입된 것은, 개발 프레임워크 내에서 생성하는 객체(Object) 혹은 모델(Model)와 데이터베이스(DataBase)의 연관 관계(Relationships)(테이블(Table))를 연결(매핑)을 쉽게 하고, 애플리케이션의 객체(Object)를 데이터베이스(DataBase)로 쉽게 마이그레이션(Migration)하는 작업을 편리하게 하기 위함이다.
-
ORM의 장점으로는 중복 코드 방지, 다른 데이터베이스(DataBase)로 쉽게 교체/마이그레이션 가능, 여러 테이블(Table)에 쉽게 쿼리(Query)를 날릴 수 있으며, 인터페이스를 작성하는 시간을 아껴 비즈니스 로직에 집중할 수 있다는 점이 있다.
단점
1. 튜닝의 어려움
- 미세한 수정 및 디버그하기가 상대적으로 어렵다.
2. 복잡한 쿼리작성의 문제
- ORM이 지정해 놓은 명령만 내릴 수 있다.
3. Raw쿼리에 비해 느린 실행속도
- DB에 직접 명령을 내리지 않고 한단계 거쳐가기 때문에 조금 느리다.
SQL(Structured Query Language) vs TypeORM vs 시퀄라이즈(Sequelize) vs Knex
- 다음은 각각의 문법의 비교이다.
JavaScript
JavaScript