ORM을 이해하기 전에 먼저 영속성 이라는 개념을 이해할 필요가 있다.
프로그램이 종료되어도 사라지지 않는 데이터의 특성
영구적인 객체 : 데이터를 파일시스템 혹은 DB를 통해서 영구적으로 저장하여 영속성을 부여
영속성을 이해했다면 쉽게 ORM을 이해할 수 있다.
ORM (Object Relational Mapping, 객체-관계 매핑)
객체와 관계형 데이터베이스의 데이터를 자동으로 연결해주는 것
객체 지향 프로그래밍은 클래스를 사용하고 관계형 데이터베이스는 테이블을 사용한다. 때문에 이 둘 사이에는 일치하지 않는 부분이 존재하는데 이를ORM을 통해서 해결한다.
객체 지향적인 코드로 인해 더 직관적이고 비즈니스 로직에 더 집중할 수 있다.
ORM을 통해서 굳이 SQL Query를 사용하지 않고 더 직관적인 메소드를 통해서 데이터를 조작할 수 있기 때문에 객체 모델로 프로그래밍하는데 집중할 수 있다. 이 외에도 부수적인 코드가 줄어들고 가독성 또한 좋아진다.
재사용 및 유지보수의 편리성 증가
ORM은 독립적으로 작성되고 재사용 또한 가능하다. 디자인 패턴을 견고하게 하는데 유리하다.
DBMS에 대한 종속성이 줄어든다.
데이터 구조와 클래스 구조 사이의 간격을 줄여준다. 이는 DBMS를 교체하는 거대한 작업에서 비교적 적은 리스크와 시간이 소요된다.
완전한 ORM 만으로 서비스를 구현하기 어렵다.
복잡성이 커질 경우 난이도 또한 올라갈 수 있다. 잘 못 구현되면 심할 경우 일관성이 무너진다.
프로시저가 많은 시스템에선 ORM의 객체 지향적인 장점을 활용하기 어렵다.
이미 프로시저가 많은 시스템에선 다시 객체로 바꿔야하며, 그 과정에서 생산성 저하 혹은 리스크가 많이 발생할 수 있다.