ORM은 객체지향 언어에서
서로 다른 시스템 간의 데이터 형식 호환을 위해
데이터를 변환하고 맵핑(연결)해주는 기술을 의미합니다.
Object는 OOP(Object oriented Programming)에서의 Object,
즉 클래스 형태를 의미합니다.
서로 교류하는 시스템 간에 사용하는 언어가 다르거나
데이터를 기술하는 방식이 다르기에
시스템이 변경되더라도 이를 하나의 코드로 통합해서
사용할 수 있는 기술이 필요했습니다.
이 개념을 기존의 Object 개념과 연결해서
하나의 클래스가 하나의 실제 시스템 자료구조에 연결되도록 추상화해서
연결한 것입니다.
ORM의 개념은 웹 서비스가 아닌 다른 시스템에 대해서도
사용가능한 개념이지만,
우리가 배울 ORM은 웹 개발에서의 내용으로 한정되기 때문에
데이터베이스의 스키마(데이터베이스에 저장될 데이터 형태와 속성(즉, 메타 데이터)의 집합)를 소스코드로 기술하고
재사용할 수 있도록 하는 것으로 이해하시면 되겠습니다.
ORM을 사용하게 되면
sqlite로 데이터베이스를 사용하다가
mysql로 데이터베이스를 변경할 때에도
코드는 거의 변경없이 사용할 수 있게 됩니다.
물론, 데이터는 옮겨야 합니다.
Django에서도 ORM을 제공하고 있으며,
기본적으로 하나의 모델 클래스에 하나의 테이블로 연동이 됩니다.
그래서 우리가 웹 사이트에서 사용할 모든 모델의 정보를 클래스로 기술하면 여러 테이블의 메타 데이터를 포함하고 있는 데이터베이스 스키마를 기술한 것이 됩니다.