간단히 말하자면 말 그대로 객체(object)와 관계(relational)의 연결(mapping)이라고 할 수 있습니다.
원래 데이터베이스 서버의 어떤 데이터를 조회, 추가, 수정, 삭제할 때는 sql이라는 언어를 써야합니다. 코드를 짜는것도 머리 아픈데 DB쿼리까지 신경쓰려면 머리가 두 배로 아프겠죠? 그런데 sql을 사용하지 않고, 파이썬이라면 파이썬 코드로, 자바면 자바로, 각 언어를 활용해서 sql 코드를 만들어내는 라이브러리가 있는데 이것을 ORM 이라고 합니다. ORM의 개념을 이해하기 위해서는 먼저 SQL에 대해서 알아야 합니다.
SQL
이란? Structure Query Language로 데이터베이스와 대화할때 사용하는 언어입니다. 이를 콘솔에 작성하는 것을 SQL statement라고 하고 다음과 같은 형태로 사용합니다.SELECT * FROM users WHERE country="korea" ORDER BY created_date
django는 파이썬을 기반으로 하는 프레임워크이기 때문에 원래대로라면 데이터베이스에 접근하기 위해서 SQL을 따로 사용해야 합니다. 하지만 장고에서는 ORM을 통해 두가지 언어를 사용해야 하는 귀찮은 상황을 해결해줍니다. 한마디로, 장고 ORM은 파이썬과 SQL사이의 통역사라고 할 수 있습니다. 따라서 위의 SQL 예문을 다음과 같은 파이썬 언어로 표현할 수 있게 해줍니다.
User.objects.filter(country="korea").order_by('created_date')