ORM이란 객체와 관계형 데이터베이스의 데이터를 자동으로 매핑해주는 것을 말한다
즉, 객체는 객체대로 설계하고, 관계형 데이터베이스는 관계형 데이터베이스대로 설계하더라도, 중간에서 ORM 프레임워크가 중간에서 자동으로 매핑해줘 패러다임의 불일치를 해결해준다는 의의가 있다.
객체 지향 프로그래밍 언어로 구현이 가능해 직관적인 이해가 쉽다.
또, 이는 곧 생산성 증가로 이어진다. 대량의 SQL Query를 쓰지 않고도 객체간의 관계를 풀어낼 수 있기 때문에 개발자가 좀 더 직관적으로 객체간의 관계를 파악할 수 있다. 추가로, SQL문을 사용하면서 같이 필요한 선언문, 할당, 종료 같은 부수적인 코드가 사라지거나 줄어들며, 각종 객체에 대한 코드를 별도로 작성하여 코드의 가독성을 높일 수 있다.
재사용, 유지보수, 리팩토링이 편리하다.
매핑하게 되면 정보가 명확해지기 때문에 ERD를 보는 것에 대한 의존도를 낮출 수 있다.
ORM은 독립적으로 작성이 되어 있고 해당 객체들은 재사용이 가능하다.
DBMS에 대한 종속성이 줄어든다.
대부분의 ORM 프레임워크들은 DB에 종속적이지 않다. 그러므로 개발자들은 객체에 집중함으로써 DBMS를 교체하는 극단적인 작업에도 비교적 적은 리스크와 시간이 소요된다. (여기서 종속성이라는 것은 프로그램 구조가 데이터 구조에 영향을 받는 것을 의미한다.)
DB의 마이그레이션을 쉽게 할 수 있다.
직접 SQL문을 작성하는 것보다 상대적으로 복잡할 수가 있고 프로젝트의 복잡성이 높아질 경우 난이도가 그 만큼 올라간다. 모든 것을 ORM을 통해서만 구현하는 것은 힘들다. 잘못 구현된 경우에 속도 저하 및 심각할 경우 일관성이 무너지는 문제점이 생길 수도 있다.
DB와 바로 연결하는 것보다 초기설정이 더 많아지거나 복잡해 질 수있다.
DB와 ORM 프레임워크, 내부코드에 대한 충분한 이해가 없는 경우 문제 해결이 힘들다.