_won_
wonprogrammer
_won_
전체 방문자
오늘
어제
  • 분류 전체보기
    • woncoding
      • TIL
      • WIL
    • source Code
      • Python
      • Programmers
      • BAEKJOON

블로그 메뉴

  • 방명록

티스토리

Github · Wonprogrammer
hELLO · Designed By 정상우.
_won_

wonprogrammer

TIL | 2.3.금 [CS 기초지식 | Django ORM]
woncoding/TIL

TIL | 2.3.금 [CS 기초지식 | Django ORM]

2023. 2. 6. 11:38

Django ORM

- ORM 란?

ORM이란 Object-Relational Mapping의 약자로 객체(Object)와 관계형 데이터베이스(Relational Database)의 데이터를 매핑(Mapping)해주는 것을 의미한다.

 

 

- ORM 장단점

[장점]

  • 완벽한 객체지향적인 코드 → 직관적인 이해가 쉬움
    • ORM을 이용하면 SQL문이 아닌 클래스의 메서드를 통해 데이터베이스를 조작할 수 있어, 개발자가 객체 모델만 이용해서 프로그래밍을 하는 데 집중할 수 있게한다.
    • SQL 문을 사용하면서 같이 필요한 선언문, 할당, 종료 같은 부수적인 코드가 사라지거나 줄어들며, 각종 객체에 대한 코드를 별도로 작성하여 코드의 가독성을 높일 수 있다.
    • 객체지향적 접근과 SQL의 절차적/순차적 접근이 혼재되어있던 기존 방식과 달리 오직 객체지향적 접근만 고려하면 되기때문에 생산성이 증가한다.
  • 재사용, 유지보수, 리팩토링의 용이성
    • ORM을 통해 작성한 객체를 재활용할 수 있다는 측면에서 재사용 및 유지보수의 편리성이 증가함
  • DBMS(DataBase Management System) 종속성 하락
    • 객체 간의 관계를 바탕으로 SQL문을 자동으로 생성하고, 객체의 자료형 타입까지 사용할 수 있기 때문에 RDBMS의 데이터 구조와 객체지향 모델 사이의 간격을 좁힐 수 있다.
    • 객체에만 집중할 수 있기 때문에 DBMS를 교체하는 큰 작업에도 리스크가 적고 드는 시간도 줄어든다. → 예들 들어 자바에서 가공할 경우 equals, hashCode의 오버라이드 같은 자바의 기능을 이용할 수 있고, 간결하고 빠르게 가공할 수 있다.

[단점]

  • ORM이 모든 걸 해결해줄 수 없다.
    • 적절하게 SQL문을 사용할 수 있어야한다.
    • 프로젝트의 복잡성이 커질 수록 난이도도 올라가고 부족한 설계로 잘못 구현되었을 경우 속도 저하 및 일관성을 무너뜨리는 문제점이 생길 수 있다.
    • 또한 일부 자주 사용되는 대형 SQL문은 속도를 위해 별도의 튜닝이 필요하기 때문에 결국 SQL문을 써야할 수도 있다.
  • 복잡한 쿼리문의 경우 오히려 SQL문으로 사용이 직관적이면서 효율적일 수 있다.

 

저작자표시 비영리 변경금지 (새창열림)

'woncoding > TIL' 카테고리의 다른 글

TIL | 2.7.화 [Rest API / Fast API]  (0) 2023.02.09
TIL | 2.6.월 [CS 기초지식 | JWT]  (0) 2023.02.07
TIL | 2.2.목 [CS 기초지식 | 동시성과 병렬성]  (0) 2023.02.06
TIL | 2.1.수 [CS 기초지식 | 쿠키와 세션]  (0) 2023.02.06
TIL | 1.31.화 [CS 기초지식 | OSI 7계층]  (1) 2023.02.01
    'woncoding/TIL' 카테고리의 다른 글
    • TIL | 2.7.화 [Rest API / Fast API]
    • TIL | 2.6.월 [CS 기초지식 | JWT]
    • TIL | 2.2.목 [CS 기초지식 | 동시성과 병렬성]
    • TIL | 2.1.수 [CS 기초지식 | 쿠키와 세션]
    _won_
    _won_
    Coding Practice blog

    티스토리툴바