ORM은 MVC(모델 뷰 컨트롤러) 패턴에서
데이터베이스를 가져오는 데의 역할과 관련이 있습니다.
우리가 프레임워크를 사용할 때 쓰는 OOP(객체 지향 프로그래밍)에서 쓰이는 객체라는 개념을 구현한 클래스와 RDB(관계형 데이터베이스) 에서 쓰이는 테이블 데이터를 자동으로 연결(매핑) 하는 것을 의미합니다.
ORM을 활용하면 객체간의 관계를 바탕으로 SQL문을 자동으로 생성해줍니다. 객체를 통해 간접적으로 데이터베이스를 관리할 수 있게 되는 장점을 가집니다.
클래스의 메서드를 활용하여 데이터베이스를 조작할 수 있게 됩니다. 개발자가 객체 모델만 사용해서 프로그래밍을 할 수 있게 되는데요, SQL 구문을 사용할 때와는 다르게 선언문, 할당, 종료 같은 부수적인 코드가 줄어들어 시간적인 효율성과 객체에 대한 접근방법만 고민하면 되는 장점을 가지고 있습니다.
ORM은 기존 객체에서 독립적으로 작성되고 객체로 만들어져 있기 때문에 재사용할 수 있습니다. 또한 매핑하는 정보가 명확합니다. 이로 인해 ERD를 보는 의존도가 낮아집니다.
객체간의 관계를 바탕으로 SQL 문을 자동으로 생성하고 자료형 타입까지 사용할 수 있어 RDBMS의 데이터 구조와 객체 지향 모델 사이의 간격을 줄일 수 있습니다. 객체에만 집중할 수 있기 때문에 DBMS를 교체하는 큰 작업에도 리스크가 적고 시간이 덜듭니다.
프로젝트의 복잡성이 커질 수록 난이도가 올라갑니다. 설계를 잘못 짰을 경우 속도 저하와 일관성이 무너지는 문제가 생깁니다. 또한 일부 자주 사용되는 대형 SQL 구문은 별도의 튜닝이 필요할 수 있어 이 때는 SQL 구문을 사용하는 것이 더 나을 수도 있습니다.