ORM(Object-Relational Mapping) 패키지를 사용하는 이유는 객체 지향 프로그래밍과 관계형 데이터베이스(RDB)를 매끄럽게 통합하고 효율적으로 사용할 수 있도록 돕기 때문입니다. 구체적으로 다음과 같은 장점들이 있습니다:
1. 데이터베이스 종속성의 문제
전통적으로 SQL을 직접 작성하는 방식에서는 데이터베이스 시스템마다 미묘한 차이 때문에 다음과 같은 문제점이 생길 수 있습니다:
데이터 타입이 서로 다름:
예를 들어, MySQL에서는 문자열 타입으로 VARCHAR를 사용하지만, PostgreSQL에서는 같은 용도로 TEXT를 사용할 수도 있습니다.
SQL 문법 차이:
예를 들어, MySQL의 LIMIT 구문과 Oracle의 ROWNUM 구문은 같은 기능을 하지만 문법이 다릅니다.
특정 데이터베이스 기능 의존:
특정 데이터베이스의 고유한 기능(예: JSON 컬럼 타입, 특정 함수 등)에 의존하면 다른 데이터베이스로 마이그레이션하기 어렵습니다.
이로 인해 특정 데이터베이스를 변경하거나 업그레이드할 때 코드 수정 비용이 증가하게 됩니다.
2. ORM의 데이터베이스 독립성
ORM은 데이터베이스에 종속적이지 않은 추상화 레이어를 제공합니다. 이 말은 ORM이 데이터베이스와 상호작용하는 세부 사항을 캡슐화하여, 개발자가 데이터베이스마다 다른 SQL 문법이나 구조를 직접 신경 쓰지 않아도 된다는 뜻입니다.
ORM의 동작 방식:
ORM은 객체 지향 코드와 관계형 데이터베이스 간의 매핑을 자동으로 처리합니다.
데이터베이스에 따라 적합한 SQL 쿼리를 생성합니다.
예를 들어, User.objects.all() 같은 ORM 메서드를 사용하면, MySQL에서는 MySQL에 맞는 쿼리를, PostgreSQL에서는 PostgreSQL에 맞는 쿼리를 생성합니다.
데이터베이스 설정을 변경해도 애플리케이션 코드에는 영향을 미치지 않습니다.
보통 설정 파일에서 데이터베이스 타입을 변경하면 ORM이 이에 맞는 작업을 처리합니다.