ORM & ODM
ORM과 ODM
ODM,ORM의 역할은 DBMS와 프로그램 코드 사이에 위치하여 쿼리문을 사용하지 않게 해주어 전보다 훨씬 간결한 표현문으로 같은 기능을 수행할 수 있게 해줍니다.
ORM
ORM은 Object Relational Mapping의 줄임말으로, 객체-관계 매핑의 뜻을 가지고있다.
객체 지향 프로그래밍에서 쓰이는 객체라는 개념을 구현한 클래스와 관계형 데이터베이스에서 쓰이는 데이터인 테이블 자동으로 매핑(연결)하는 것을 의미한다.
객체 지향 프로그래밍은 클래스를 사용하고 관계형 데이터 베이스는 테이블을 사용한다. 여기서 객체 모델과 관계형 모델 간에 불일치가 존재하는데, 이 객체 간의 관계를 바탕으로 SQL을 자동 생성하여 불일치를 해결한다.
ODM
Object Document Mapping의 약자로, MongoDB와 같은 문서 데이터베이스로 개체를 매핑하는 개체 문서 매퍼이다.
ORM의 장점과 단점
장점
완벽한 객체지향적인 코드
ORM을 이용하면 SQL문이 아닌 클래스의 메서드를 통해 데이터베이스를 조작할 수 있어, 개발자가 객체 모델만 이용해서 프로그래밍을 하는 데 집중할 수 있게한다. 객체지향적 접근과 SQL의 절차적/순차적 접근이 혼재되어있던 기존 방식과 달리 오직 객체지향적 접근만 고려하면 되기때문에 생산성이 증가한다.재사용, 유지보수, 리팩토링 용이성
ORM은 기존 객체와 독립적으로 작성되어있고, 객체로 작성되었기 때문에 재활용할 수 있다. 또한, 매핑하는 정보가 명확하기 때문에 ERD를 보는 의존도를 낮출 수 있다.DBMS(DataBase Management System) 종속성 하락
객체 간의 관계를 바탕으로 자동으로 SQL문을 생성하고, 객체의 자료형 타입까지 사용할 수 있기 때문에 RDBMS의 데이터 구조와 객체지향 모델 사이의 간격을 좁힐 수 있다.
객체에만 집중할 수 있기 때문에 DBMS를 교체하는 큰 작업에도 리스크가 적고 드는 시간도 줄어든다.
단점
- ORM이 모든 걸 해결해줄 수 없다.
ORM을 사용하는 것은 매우 편리하지만 그만큼 신중하게 설계해야한다. 프로젝트의 복잡성이 커질 수록 난이도도 올라가고 부족한 설계로 잘못 구현되었을 경우 속도 저하 및 일관성을 무너뜨리는 문제점이 생길 수 있다. 또한 일부 자주 사용되는 대형 SQL문은 속도를 위해 별도의 튜닝이 필요하기 때문에 결국 SQL문을 써야할 수도 있다.