ORM과 ODM 모두 그 역할은 비슷하다. SQL계열, 즉 관계형 DB는 ORM(Object Relatinal Mapping), NoSQL계열 DB는 ODM(Object Data Mapping)에 해당된다 정도로 보면 되겠다. 따라서 굳이 각각을 알아보기보다는 ORM을 중심으로 알아보자.
ORM
객체 지향 프로그래밍은 클래스
를 사용하고 관계형 데이터베이스는 테이블
을 사용한다. 여기서 객체 모델과 관계형 모델간에 불일치가 존재하는데 이 객체 간의 관계를 바탕으로 SQL을 자동 생성하여 불일치를 해결해주는 것이 ORM이다. 즉, Object와 DB의 데이터 간의 맵핑의 역할을 하는 것이 ORM
이라 볼 수 있다.
장점
- 객체 지향적 코드로 인해 가독성이 향상되며, 비즈니스 로직에 집중할 수 있도록 도와준다.
- 긴 SQL 문장을 작성할 필요가 없다.
- ORM은 독립적으로 작성이 되어 있고 해당 객체들은 재사용이 가능하여 재사용 및 유지보수의 편리성이 증가한다.
- DBMS에 대한 종속성이 줄어들어 DBMS 변경 시 드는 비용이 줄어든다.
단점
- 완벽한 ORM만으로는 구현하기가 어렵다.(결국 프로젝트가 커질수록 SQL을 사용해야 할 확률이 높다.)
- 프로젝트의 복잡성이 높아질 경우, ORM의 추상화라는 장점이 오히려 단점이 될 수 있다.
- 잘못 구현된 경우 성능저하가 생길 수 있다.
[참고자료]
https://velog.io/@alskt0419/ORM%EC%97%90-%EB%8C%80%ED%95%B4%EC%84%9C…-iek4f0o3fg