- 완벽한 객체 지향적 코드를 짤 수 있게 되고 그로 인해 생산성이 증대된다.
- CRUD을 위한 긴 SQL 문장을 작성할 필요가 없다. (여전히 쿼리작성은 필요하지만)
- 각 객체(Model)별로 코드를 작성하여 가독성을 높여 준다.
- SQL의 절차적 접근이 아닌 객체적인 접근으로 생산성을 높여 준다.
- 재사용, 유지보수, 리팩토링이 용이하다.
- ORM은 독립적으로 작성이 되어 있고 해당 객체들은 재사용이 가능 하다.
- DBMS(DataBase Management System)에 종속성이 하락한다. 고로 객체에만 집중할 수 있기 때문에 DBMS를 교체하는 큰 작업에도 리스크가 줄고 시간도 준다.
- ORM이 모든 것을 해결해 줄 수는 없다.
- 사용하기에는 편하지만 설계에는 매우 신중해야 한다.
- 프로젝트의 복잡성이 높아질 경우 난이도 또한 올라갈 수 있다.
- 잘못 구현된 경우 속도 저하 및 심한 경우 일관성이 무너지는 문제점이 생길 수 있다.
Table보다 Class의 갯수가 많은 경우가 있다.
RDBMS는 상속성이 존재하지 않는다.
RDBMS는 Primary Key를 통해 동일성을 정의하지만 다른 언어들은 연산자나 동일성 검사를 통해 동일성을 정의한다.
객체는 객체의 참조(reference)를 통해 서로의 연관성을 확인하고 RDBMS는 Foriegn Key를 통해 연관성을 정의한다.
객체는 그래프형태로 탐색하지만 RDBMS는 JOIN을 통해 탐색을 한다.