ORM은 Object-Relational Mapping의 줄임말이다.
말 그대로 객체(Object)와 관계형 데이터베이스(Relational DB)를 연결(Mapping)해주는 기술이다.
쉽게 말하면
SQL을 직접 쓰지 않고도
Python 코드로 DB 데이터를 읽고 , 쓰고 , 수정할 수 있도록 도와주는 도구이다.
SQL로 직접 DB를 다루면 다음과 같은 단점이 있다:
ORM을 사용하면 이런 장점이 있다:
예: 사용자 테이블 만들기
# models.py
from django.db import models
class User(models.Model):
username = models.CharField(max_length=50)
email = models.EmailField()
이렇게 클래스로 모델을 만들면
Django는 이걸 바탕으로 실제 DB 테이블을 생성한다.
User.objects.create(username="jion", email="jion@example.com")
User.objects.all()
User.objects.filter(username="jion")
user = User.objects.get(id=1)
user.email = "new_email@example.com"
user.save()
user = User.objects.get(id=1)
user.delete()
SELECT * FROM users WHERE username = 'jion';
-> ORM은 이런 SQL을 대신해주는 것.
코드로 작성되므로 Python 문법만 이해하면 DB 작업까지 가능하다.
ORM은 자동 번역기 같은 역할이다.
Python 코드로 작성하면 그걸 SQL로 자동으로 번역해 DB에 전달하고 결과를 가져온다.
꼭 그렇진 않다.
SQL에 익숙한 개발자나 복잡한 쿼리가 필요한 경우엔
직접 SQL을 작성하기도 한다.
하지만 백엔드 입문자나 Django 같은 프레임워크를 사용하는 경우엔
ORM을 기본으로 쓰는 것이 훨씬 빠르고 안전하다.
ORM은 Python 객체와 데이터베이스를 연결해주는 도구
SQL을 몰라도 DB를 조작할 수 있도록 도와준다
Django의 ORM은 모델 클래스와 메서드를 통해 CRUD 작업을 수행한다
Django 프로젝트의 전체 흐름을 한눈에 볼 수 있도록
"회원가입은 어디서부터 어디까지 흘러가는가?" 정리할 예정