ORM 이란?

yunseul·2024년 6월 26일

Django

목록 보기
30/30

ORM 정의

ORM 이란 ?

→ Object Relational Mapping 의 약자로, 데이터베이스와 Python 객체의 상호작용을 쉽게 할 수 있도록 해주는 것

ORM 기능

→ SQL 쿼리를 작성하지 않고, 데이터베이스 작업 수행 가능

ORM 예시

django 모델 생성

from django.db import models

class orm_test(models.Model):
		title = models.CharField(max_length=100)
		body = models.CharField(max_length=200)

migration 하게 되면 아래의 구조를 가진 테이블이 생성 됨

CREATE TABLE orm_test (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    title VARCHAR(100) NOT NULL,
    body VARCHAR(200) NOT NULL
);

ORM 장, 단점

장점

  • 생상성 향상
    • DB 와 상호 작용하는 코드를 자동으로 만들어, 개발 속도가 증가 된다.
    • SQL 쿼리를 직접 작성하지 않아도 된다.
  • 간편한 유지보수
    • 코드가 간결하고 가독성이 높아짐에 따라 유지 보수가 쉽다.
    • 데이터베이스 스키마를 변경하는 경우, migration 명령어를 사용하여 간편하게 적용 가능하다.
  • 데이터베이스 독립성
    • django ORM 은 다양한 데이터베이스의 백엔드를 지원하므로, 코드의 변경 없이 다른 데이터베이스로 쉽게 전환 가능 하다.
    • MySQL, PostgreSQL, SQLite, Oracle 등
  • 보안
    • SQL 인젝션 공격에 대한 방어가 내장되어 있으므로 보안성이 높다.
    • ORM이 자동으로 쿼리를 안전하게 처리하므로 오류의 발생 가능성을 줄일 수 있다.
  • 통합된 보안관리
    • 데이터베이스 스키마와 검증 로직을 한번에 관리할 수 있다.
    • 자동으로 생성되는 admin 페이지를 통해 데이터를 쉽게 관리할 수 있다

단점

  • 성능 문제
    • 추상화 레이어가 추가됨에 따라, 복잡한 쿼리와 대량의 데이터를 처리하기 부적합하다.
    • 직접 작성하는 쿼리에 비해, 상대적으로 덜 최적화될 수 있다.
  • 제한된 기능
    • 모든 SQL 기능을 지원하지 않으며, 특정 기능을 사용할 때 제약이 발생할 수 있다.
  • 학습 곡선
    • ORM 자체를 이해하고, 사용하는데 시간이 다소 소요된다.
    • 복잡한 쿼리와 특정 기능을 사용할 때, ORM 동작 방식을 이해하고 있어야 한다.
  • 디버깅 문제
    • ORM 이 자동으로 생성한 쿼리로, 디버깅이 어려울 수 있다.
  • 추상화의 단점
    • 추상화로 인해, 코드는 간단해지지만 데이터베이스의 내부 동작을 이해하는데는 도움이 되지 않는다.
profile
새로운 것을 시도하고 도전하는 것을 좋아하는 Engineer 입니다..

0개의 댓글