Django CRUD Model #1
Django CRUD를 위한 Model을 공부하며 적어보려고 합니다!
Django app개발의 핵심 중 Model의 역할
이전 글에서 기술했듯이 Model의 역할은 ORM
으로 DB의 Data생성, 조회, 수정 및 삭제등을 가능하게 함
ORM
객체(Class)와 관계형 데이터베이스의 데이터를 자동으로 매핑해주는것을 의미함
이것이 왜 필요하냐면 객체와 테이블은 호환가능성을 두고 만들어진 것이 아니기 때문에 불일치가 발생하는데 ORM을 이용하여 객체 간의 관계를 바탕으로 SQL문을 자동으로 생성하여 불일치를 해결할 수 있음
ORM 사용시의 장점
- 완벽한 객체지향적인 코드
ORM을 이용하면 Class의 method를 통해 db를 제어할 수 있어서 개발자가 Class model만 이용하여 프로그래밍 가능
- 재사용, 유지보수, 리팩토링 용이
기존 객체와 독립적으로 작성되어있고, 객체로 작성되어 재활용 가능 및 매핑하는 정보가 명확하여 ERD의존도를 낮출 수 있음
- DBMS 종속성 하락
프로그램 구조가 데이터 구조에 끼치는 영향이 줄어듬
객체간의 관계를 바탕으로 SQL문을 자동으로 생성하고 객체의 자료형 타입까지 사용할수 있기 때문에 RDBMS의 데이터 구조와 객체지향 모델 사이의 간격을 좁힐 수 있음.
객체에만 집중할 수 있어서 DBMS를 교체하는 큰 작업에도 리스크, 시간이 줄어듬
ORM 사용시의 단점
- ORM이 모든것을 해결해줄 수 없음
Project의 복잡성이 커질 수록 난이도 상승 및 부족한 설계로 잘못 구현되었을 경우 속도 저하, 일관성을 무너뜨리는 문제접 발생할 수 있고 일부 자주 사용되는 대형 SQL문은 속도를 위해 별도의 튜닝이 필요하여 결국 SQL문을 사용해야 할 수도 있음
ERD를 따라 Class 작성하기
참고한 ERD 👇🏻
작성한 Class Code
DB Table을 만들기 위해 장고의 class인
models.Model
을 작성한 class가 상속받을 수 있게 함
shell
에서 작업하기 쉽게__str__
에 이름이 보일 수 있게 작성했고 Product와 Allergy class는ManyToManyField
로M2M
관계를 설정해줬음
Django Model을 활용하여 DB에 TABLE 생성하기
위에 Class를 만든다고 해서 DB에 모델이 생기지는 않기 때문에 만든 Class로 ORM을 통해 직접 DB에 Data Table을 만들어줘야 한다!
$ python manage.py makemigrations <app_name>
makemigrations
는migrate
파일을 만들어 주는 역할을 하는데python
코드를 SQL로 변환하기 위한 일종의 설계문을 생성한다고 볼 수 있다
$ python manage.py migrate
해당 migration 파일을 DB에 반영하는 명령어
위처럼 migrate
가 완료되면 DB에 실제 Table들이 생성이 된 것을 확인 할 수 있다
글 내용 중 잘못된 부분 있으면 Feedback 부탁드립니다!👊🏻👊🏻👊🏻👊🏻
ref.
https://geonlee.tistory.com/207
Author And Source
이 문제에 관하여(Django CRUD Model #1), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@ambitiouskyle/Django-CRUD-Model-1저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)