2022년 하계 방학 첫 백엔드 세션은 간단하게 Django의 ORM
을 세션으로 진행하게 되었습니다!
ORM이란 Object Relational Mapping의 약어로 SQL문을 다음과 파이썬 언어에서 사용할 수 있도록 해주는 기술입니다.
Django의 ORM이 쿼리셋(Queryset)이라는 자료형을 사용함에 따라 가지는 세가지 특징을 중심으로 알아보았습니다!
: 쿼리셋은 필요한 시점에만 SQL문을 호출한다는 특징 입니다.
users = User.ojbect.all()
user_1 = users[0]
users_list = list(users)
Django의 Lazy loading이라는 특징 때문에 이런 경우에는 user_1에서 users의 첫번째 요소를 호출, users_list에서 users에 담긴 User 모델을 리스트화하면서 users의 첫번째 요소가 두 번 호출되는 문제점이 생깁니다.
: 위의 이런 문제점은 쿼리셋의 Caching이라는 특징을 통해 해결가능합니다. 쿼리셋에서 SQL을 호출하면 그 데이터 결과 값은 캐시 메모리에 저장되고 이후 동일한 쿼리셋을 사용할 경우 추가적인 Query는 발생하지 않고 캐시에서 꺼내 사용하는 특징인데요, 위의 코드 같은 경우
users = User.ojbect.all()
users_list = list(users)
user_1 = users[0]
로 순서만 바꿔줘도 간단하게 SQL의 중복 호출을 방지할 수 있습니다!
: 쿼리셋은 기본적으로 Lazy loading이라는 특징을 갖지만 SQL로 한번에 많은 데이터를 끌어오고 싶을 때 사용되는 특징입니다.
Django에서 지원하는 Eager loading의 메소드는 크게 두 가지가 있는데요,
이번 세션을 통해 한단계 더 발전한 백엔드 개발자가 될 거라도 생각합니다!🤩
다들 고생하셨습니다~~. 다음 세션때 뵈어요. 🙌