Django ORM
- ORM 란?
ORM이란 Object-Relational Mapping의 약자로 객체(Object)와 관계형 데이터베이스(Relational Database)의 데이터를 매핑(Mapping)해주는 것을 의미한다.
- ORM 장단점
[장점]
- 완벽한 객체지향적인 코드 → 직관적인 이해가 쉬움
- ORM을 이용하면 SQL문이 아닌 클래스의 메서드를 통해 데이터베이스를 조작할 수 있어, 개발자가 객체 모델만 이용해서 프로그래밍을 하는 데 집중할 수 있게한다.
- SQL 문을 사용하면서 같이 필요한 선언문, 할당, 종료 같은 부수적인 코드가 사라지거나 줄어들며, 각종 객체에 대한 코드를 별도로 작성하여 코드의 가독성을 높일 수 있다.
- 객체지향적 접근과 SQL의 절차적/순차적 접근이 혼재되어있던 기존 방식과 달리 오직 객체지향적 접근만 고려하면 되기때문에 생산성이 증가한다.
- 재사용, 유지보수, 리팩토링의 용이성
- ORM을 통해 작성한 객체를 재활용할 수 있다는 측면에서 재사용 및 유지보수의 편리성이 증가함
- DBMS(DataBase Management System) 종속성 하락
- 객체 간의 관계를 바탕으로 SQL문을 자동으로 생성하고, 객체의 자료형 타입까지 사용할 수 있기 때문에 RDBMS의 데이터 구조와 객체지향 모델 사이의 간격을 좁힐 수 있다.
- 객체에만 집중할 수 있기 때문에 DBMS를 교체하는 큰 작업에도 리스크가 적고 드는 시간도 줄어든다. → 예들 들어 자바에서 가공할 경우 equals, hashCode의 오버라이드 같은 자바의 기능을 이용할 수 있고, 간결하고 빠르게 가공할 수 있다.
[단점]
- ORM이 모든 걸 해결해줄 수 없다.
- 적절하게 SQL문을 사용할 수 있어야한다.
- 프로젝트의 복잡성이 커질 수록 난이도도 올라가고 부족한 설계로 잘못 구현되었을 경우 속도 저하 및 일관성을 무너뜨리는 문제점이 생길 수 있다.
- 또한 일부 자주 사용되는 대형 SQL문은 속도를 위해 별도의 튜닝이 필요하기 때문에 결국 SQL문을 써야할 수도 있다.
- 복잡한 쿼리문의 경우 오히려 SQL문으로 사용이 직관적이면서 효율적일 수 있다.
'woncoding > TIL' 카테고리의 다른 글
| TIL | 2.7.화 [Rest API / Fast API] (0) | 2023.02.09 |
|---|---|
| TIL | 2.6.월 [CS 기초지식 | JWT] (0) | 2023.02.07 |
| TIL | 2.2.목 [CS 기초지식 | 동시성과 병렬성] (0) | 2023.02.06 |
| TIL | 2.1.수 [CS 기초지식 | 쿠키와 세션] (0) | 2023.02.06 |
| TIL | 1.31.화 [CS 기초지식 | OSI 7계층] (1) | 2023.02.01 |