TypeORM이나 GORM, Sequelize 등의 ORM을 사용하면서 그냥 DB Query와의 차이가 있을건데 생각을 하지 않고 사용하다가 궁금해서 정리하게 됐다.
ORM이 그냥 Query보다는 사용하기 쉬운건 알겠고, ORM보다는 Query가 더 성능이 빠른다. 이런 차이밖에 몰라서 정리하는게 좋을 거 같다고 생각했다.
ORM은 Object Relational Mapping의 줄임말로 해석 그대로 객체 관계형 매핑이다. OOP에서 쓰이는 객체라는 개념을 구현한 Class와 RDB에서 쓰는 데이터인 테이블을 자동으로 매핑을 하는 것을 말한다.
하지만 Calss와 Table은 서로가 원래 호환 가능성을 두고 만들어진게 아니라서 문제가 생기는데, 이 문제를 ORM을 사용해서 객체 간 관계를 바탕으로 SQL문을 자동으로 생성해서 문제를 해결한다.
따라서 ORM을 사용하면 따로 SQL문을 작성할 필요없이 객체를 통해서 DB를 조작할 수 있다.
완벽한 객체지향 코드
DBMS 종속성 하락
디테일 측면을 위해서는 SQL문을 사용해야한다.
복잡한 Query는 오히려 SQL문이 직관적이고 효율적일 수 있다.
ORM은 프로그램이 DB를 객체에 연결하는 것 자체를 뜻하고, Model은 이 때 연결된 객체다. 이 Model이 DB에 명령을 내릴 수 있는 삼수들이 담겨 있고, 개발자는 Model의 함수를 사용하여 DB에 명령을 내린다.
Schema는 Model의 구조 및 설정이며, Model은 실제 DB에 접근할 수 있는 객체다. Model 객체는 주로 첫글자를 대문자료 표시한다.
즉, Schema는 문서에 어떤 값 또는 특성이 들어가는지 정의이고, Model은 Schema를 통해 만든 객체다.