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쿼리에 비해 느린 실행속도 발생