ORM 은 Object-relational mapping 의 약자이며, 말 그대로 객체 관계에 대한 매핑을 말합니다.

이는 호환되지 않는 시스템간에 데이터를 변환-구성 하여 상호 통신이 가능하게 만들어주는 기능을 뜻하며 ORM 오픈소스 라이브러리를 이용할수도 있지만 필요에 따라 자체적인 ORM 도구를 만들 수 도 있습니다.

ORM을 이용하면 개발자가 Sql을 작성하여 사용하지 않고 라이브러리를 사용하여 객체로 작업할 수 있게 됩니다.

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/472fcc41-905a-4518-a13b-764623a270a1/orm.png

잘 구성된 객체 모델은 프로그래밍과 디버깅면에서 유용할 수 있습니다.

하지만 언어에 따라 객체지향 언어 또는 절차지향의 언어로 만든 모델을 데이터베이스의 관계형 모델과 매핑해야 하므로 객체를 모델링 하는것이 쉽지 않습니다.

ORM을 이용하게 되면 개발 중 사용되는 객체와 데이터베이스 사이의 불일치성을 줄여주고 복잡한 SQL Query의 사용을 함수화 시킴으로서 디버깅의 편의성을 제공해줍니다.

또한 DML 뿐 아니라 DLL을 제공함으로서 관계를 가진 테이블의 생성등이 가능하게 합니다.

ORM을 이용하여 개발을 진행할시, 개발자는 데이터베이스 구조에 대하여 명확하게 알고있어야 하고, 성능적인 측면에서 직접적인 SQL 보다 부족합니다.

따라서 개발자는 개발 환경에 대한 이해와 데이터베이스 설계를 명확히 이해해야 하고 모델 구조를 객체화 할 줄 알아야 하여 이해도가 부족할 경우 개발시 어려움이 있을 수 있습니다.