All Articles

ORM과 ODM

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