Facts

  • ORM에 대한 개념이 궁금해졌다.

Feelings

  • 회사 프로젝트 내부에 ORM이 존재했는데, ORM에 대해 자세히 알아보지 않았다. 부끄러웠다.

Findings

  • 개념

    • ORM(Object Relational Model)은 사물을 추상화시켜 이해하려는 OOP적 사고방식과 DataModel을 정형화하여 관리하는 RDB 사이를 연결할 계층의 역할로 제시된 패러다임으로 RDB의 모델을 OOP에 Entity 형태로 투영시키는 방식을 사용한다.
    • 즉, Object와 DB간에 연결 역할을 해주는녀석이 ORM이다.
  • 등장 배경

    • ORM을 사용하지 않을 경우 개발자가 개발 하기위해 DB에 접근하기 위해서는 SQL Query문을 직접 만들었다.
    • SQL문법을 알고 있어야하기 때문에 쿼리문 작성시간이 오래걸려 개발이 지체되는 문제가 발생했다.
    • 개발 코드와 DB가 서로 종속되는 문제가 생겨나기 시작했다.
    • 이러한 문제점을 해결하기 위해 ORM이 등장하였고 ORM이 등장함으로서 SQL Query 문법에서 비교적 자유로워졌으며 개발 코드와 DB를 분리함으로써 객체지향의 의도에 부합하게 되었다.
  • ORM 사용 장점과 단점

    • 장점
    • 선언문, 할당, 종료 등과같은 부수적인 코드가 사라짐으로써 개발의 생산성 향상.
    • 명확한 쿼리 (버그와 실수 감소)
    • 코드그 간결하고 직관이기 때문에 가독성을 높여준다.
    • DB 의존성 감소
    • 특정 Database에 종속적이지 않다.
    • 개발자는 DB에 상관없이 Object에만 집중할 수 있다.
    • 단점
    • 튜닝의 어려움
    • 미세한 수정 및 디버그하기가 상대적으로 어렵다
    • 복잡한 쿼리작성의 문제
    • ORM이 지정해 놓은 명령만 내릴 수 있다
    • DB에 직접 명령을 내리지 않고 한단계 거쳐가기 때문에 Raw쿼리에 비해 느린 실행속도 발생

참고

ORM Node.js에서 사용하기