[DB] ORM과 SQL의 차이

곽태민·2023년 4월 12일
0

TIL

목록 보기
3/65

개요


TypeORM이나 GORM, Sequelize 등의 ORM을 사용하면서 그냥 DB Query와의 차이가 있을건데 생각을 하지 않고 사용하다가 궁금해서 정리하게 됐다.

ORM이 그냥 Query보다는 사용하기 쉬운건 알겠고, ORM보다는 Query가 더 성능이 빠른다. 이런 차이밖에 몰라서 정리하는게 좋을 거 같다고 생각했다.

ORM이란?


ORM은 Object Relational Mapping의 줄임말로 해석 그대로 객체 관계형 매핑이다. OOP에서 쓰이는 객체라는 개념을 구현한 Class와 RDB에서 쓰는 데이터인 테이블을 자동으로 매핑을 하는 것을 말한다.

하지만 Calss와 Table은 서로가 원래 호환 가능성을 두고 만들어진게 아니라서 문제가 생기는데, 이 문제를 ORM을 사용해서 객체 간 관계를 바탕으로 SQL문을 자동으로 생성해서 문제를 해결한다.

따라서 ORM을 사용하면 따로 SQL문을 작성할 필요없이 객체를 통해서 DB를 조작할 수 있다.

ORM 장점

  1. 완벽한 객체지향 코드

    • ORM을 사용해서 SQL문이 아니라 Class method를 통해서 DB를 조작할 수 있어서 개발자가 객체 모델만 이용해서 프로그래밍에 집중할 수 있다.
    • SQL문을 사용하면서 필요한 선언문, 할당, 종료 같은 부수적인 코드가 사라지거나 줄어들고, 각종 객체에 대한 코드를 별도로 작성해서 코드 가독성을 높일 수 있다.
    • 객체지향적 접근과 SQL의 절차적/순차적 접근이 혼재되어있던 기존 방식과 다르게 오직 객체지향적으로 접근만 고려하며 사용하기 때문에 생산성이 증가한다.
  2. DBMS 종속성 하락

    • 객체 간 관계를 바탕으로 SQL문을 자동 생성하고, 객체 자료형 타입까지 사용하면서 RDBMS의 데이터 구조와 객체지향 모델 사이의 간격을 좁힐 수 있다.
    • 객체에만 집중할 수 있어서 DBMS를 교체하는 큰 작업에도 리스크가 적고, 드는 시간도 줄어든다.

ORM 단점

  1. 디테일 측면을 위해서는 SQL문을 사용해야한다.

    • 프로젝트 복잡성이 커질수록 난이도가 올라가면서 부족한 설계로 잘못 구현할 경우 속도 저하와 일관성을 무너뜨리는 문제점이 생길 수 있다.
  2. 복잡한 Query는 오히려 SQL문이 직관적이고 효율적일 수 있다.

Model


ORM은 프로그램이 DB를 객체에 연결하는 것 자체를 뜻하고, Model은 이 때 연결된 객체다. 이 Model이 DB에 명령을 내릴 수 있는 삼수들이 담겨 있고, 개발자는 Model의 함수를 사용하여 DB에 명령을 내린다.

Schema와 Model의 차이


Schema는 Model의 구조 및 설정이며, Model은 실제 DB에 접근할 수 있는 객체다. Model 객체는 주로 첫글자를 대문자료 표시한다.

즉, Schema는 문서에 어떤 값 또는 특성이 들어가는지 정의이고, Model은 Schema를 통해 만든 객체다.

profile
Node.js 백엔드 개발자입니다!

0개의 댓글