ORM(객체 관계 매핑)이란, 데이터베이스와 객체 지향 프로그래밍 언어 간의 상호 변환을 단순화하는 기술이다. ORM은 데이터베이스 테이블을 객체로, 그리고 데이터베이스 레코드를 객체의 속성으로 매핑하여 데이터베이스와 애플리케이션 사이의 상호 작용을 간소화한다. 이것은 관계형 데이터베이스 시스템 (예: MySQL, PostgreSQL, Oracle)과 객체 지향 프로그래밍 언어 (예: Python, Java, C#) 간의 불일치를 해결하기 위해 사용된다.
ORM은 데이터베이스의 테이블 및 관계를 객체 및 객체 간의 관계로 매핑한다. 이것은 데이터베이스의 데이터를 객체 지향 코드에서 사용할 수 있게 한다.
ORM을 사용하면 SQL 쿼리를 직접 작성하는 대신 객체 지향 코드로 데이터베이스 조작을 수행할 수 있다. 이로써 코드의 가독성과 유지보수성이 향상된다.
ORM은 생성(Create), 읽기(Read), 갱신(Update), 삭제(Delete)와 같은 데이터베이스 작업을 지원한다. 이러한 작업을 ORM을 통해 객체 지향적으로 수행할 수 있다.
ORM은 데이터베이스 종속성을 낮추고, 코드를 특정 데이터베이스 시스템에 종속되지 않도록 합니다. 그러므로, 코드를 다른 데이터베이스 시스템으로 이관하기가 더 쉬워진다.
ORM은 개발자가 데이터베이스에 대한 SQL 쿼리를 작성할 필요 없이 추상화된 쿼리 언어를 사용할 수 있게 해준다.
ORM은 보안 문제 및 성능 최적화를 처리하기 위한 많은 내장 메커니즘을 제공한다.
ORM은 데이터베이스와 어플리케이션 간의 상호 작용을 단순화하고 코드의 가독성과 유지보수성을 향상시키며, 개발자들이 데이터베이스에 대한 저수준 세부 사항을 처리하는 부담을 줄여준다.
Django ORM을 사용하려면 먼저 데이터베이스 모델을 정의해야 한다. 이 모델은 데이터베이스 테이블과 매핑된다. 예를 들어, "Friend" 모델을 정의하려면 다음과 같이 모델 클래스를 작성한다.
from django.db import models
class Friend(models.Model):
irum = models.CharField(max_length=10) # 문자
juso = models.CharField(max_length=200)
nai = models.IntegerField() # 숫자
pub_date = models.DateTimeField(auto_now_add=True) # 날짜
이 코드에서 "Friend" 모델은 "irum", "juso", "nai", "pub_date"와 같은 필드를 가진다.
모델을 정의한 후, Django의 마이그레이션 도구를 사용하여 데이터베이스 스키마를 생성하거나 업데이트한다.
Django에서는 admin페이지를 지원해준다. 따라서 url에 /admin
을 추가한다면 관리자 페이지로 이동한다. 처음엔 로그인 페이지가 나오는데 회원가입과 비슷한 절차를 cmd창에서 해야한다.
cmd창에서 자신의 프로젝트 경로로 이동한 뒤,python manage.py createsuperuser
을 입력하고 id, email, password를 입력하면 된다. 여기서 입력한 장소로 관리자페이지에서 로그인이 가능하다.
admin.py 파일에 다음과 같은 코드를 입력하면 관리자페이지에서 데이터베이스 스키마가 생성된다.
from django.contrib import admin
from pro09app.models import Friend
# Register your models here.
class FriendAdmin(admin.ModelAdmin):
list_display = ('irum','juso','nai',"pub_date") # 보고 싶은 내용 보기
admin.site.register(Friend, FriendAdmin)
관리자 페이지에서 데이터 등록, 수정, 삭제, 목록보기 등이 가능하다.
이제 모델을 사용하여 데이터를 작성, 읽기, 수정, 삭제할 수 있다.
데이터 등록
new_friend = Friend(title="제목", content="내용")
new_friend.save()
데이터를 읽기
friend = Friend.objects.all()
데이터를 수정
friend = Friend.objects.get(pk=1)
friend.title = "새로운 제목"
friend.save()
데이터를 삭제
friend = Friend.objects.get(pk=1)
friend.delete()
Django ORM을 사용하여 복잡한 쿼리를 작성할 수 있으며, 필터링, 정렬, 그룹화 및 기타 작업을 수행할 수 있다. 예를 들어, 이름이 "james"인 친구를 검색하려면 다음과 같은 코드를 작성할 수 있다.
james_friend = Friend.objects.filter(title="james")