[Django] ORM에 대해서

Mincho·2023년 1월 13일
0

[Django]

목록 보기
4/4
post-thumbnail

🔴들어가기 앞서..

벡엔드 환경 특히 Django는 python프레임워크이기 때문에 기본적으로 python지식이 요구되며, DB관리를 위해서 SQL문을 알아야 DB관리를 효율적으로 할 수 있다. 그러나 SQL문까지 사용하지 않고 python코드로만 DB에 접근가능한 방법이 있다. 바로ORM을 이용하는것이다. 이 ORM에 대해 알아보자.



1. DB에 접근하는 SQL문

  우선 DB에 접근하는 SQL문의 예시를 한번 살펴보자

SELECT * FROM users WHERE country="colombia" ORDER BY created_date

# users테이블에서 country가 colombia인 데이터를 
# created_date순으로 정렬하여 모든 데이터를 조회하기.

 위와 같은 방법으로 DB에 접근하여 정보를 얻어 올 수 있고 간단해 보이지만, 데이터가 점점 쌓일수록 지저분해보이며 한 프로젝트에 최대한 적은 수의 언어로 개발을 하는 것이 좋다.



2. 그래서 탄생한 ORM

  DB에 접근하기 위해서는 위와같이 SQL문을 또 배워야하고 지저분해지는 단점이 있기 때문에 장고에서는 ORM이 나타났다.

#python으로 구성된 ORM
User.objects.filter(country="colombia").order_by('created_date')
#위와 같은 형태의 SQL문
SELECT * FROM users WHERE country="colombia" ORDER BY created_date

 장고 ORM은 파이썬과 SQL사이의 통역사 같은 것이라고 생각하면 이해하기가 쉽다. 저렇게 코드를 작성하게 되면 장고는 위의 파이썬 코드를 SQL로 번역하게 된다. 개발자는 여기서 무엇인가 더 해줄 필요가 없이 원하는 DB데이터를 볼 수 있게된다.



3. ORM의 장단점


 🤘 장점

◾ 완벽한 객체지향적인 코드

  • ORM을 이용하면 SQL문이 아닌 클래스의 메서드를 통해 데이터베이스를 조작할 수 있다. 개발자는 객체 모델만 이용해서 프로그래밍을 하는데 집중 할 수 있게 된다. 부수적인 코드가 사라저 코드의 가독성을 높일 수 있고 생산성 또한 증가한다.

◾ DBMS 종속성 하락

  • 객체 간의 관계를 바탕으로 SQL문을 자동으로 생성하고, 객체의 자료형 타입까지 사용할 수 있기 때문에 RDBMS의 데이터 구조와 객체지향 모델 사이의 간격을 좁힐 수 있다.

 👎 단점

ORM이 모든 걸 해결해줄 수 없다.

  • ORM을 사용하는 것은 편리하지만 잘못 구현되었을 경우 속도 저하일관성을 무너뜨리는 문제가 생길 수 있다. 그렇게 되면 SQL문을 써야할 수도 있다.

◾ 성능 저하 문제

  • DB와 바로 연결하는 것보다 초기설정이 더 많아지거나 복잡해 질 수 있으며, DB에 직접 Query문을 보내는 것이 아니기 때문에 속도저하가 있을 수 있다.


👍올바른 피드백은 언제든지 환영입니다~!

profile
www.mincho130.xyz <-- 블로그 이사했습니당

0개의 댓글