될때까지

개념정리 :: ORM? 본문

학습/개념정리

개념정리 :: ORM?

랖니 2022. 2. 22. 18:40
728x90
이 블로그에 정리되어있는 모든 개념들은 학습 개념으로 혼자 정리한 내용입니다.
잘못 기술한 부분이 있을 수 있으니 발견하시면 언제든지 지적해주세요😄

🥯 ORM이란?

Object Relational Mapping의 약자로 데이터베이스와 객체 지향 프로그래밍 언어 간의 호환되지 않는 데이터를 맵핑(연결)해주는 프로그래밍 기법이다. 객체(클래스)와 관계(관계형 데이터베이스)와의 설정을 의미한다. 객체 지향 프로그래밍은 클래스를 사용하고 관계형 데이터베이스에서는 테이블을 사용한다. 객체 모델과 관계형 모델간의 불일치가 존재하는데 객체간의 관계를 바탕으로 sql을 자동 생성해 불일치를 해결해주는 것이 ORM이다. 즉, 객체와 DB의 데이터 사이에서 맵핑해주는 매개체 역할을 한다.

  - 객체랑 관계형 데이터베이스의 데이터를 연결해주는 것

  - 즉, DB를 다루려면 SQL문법을 사용해야하는데, SQL을 몰라도 ORM을 이용하면 DB에 접근할 수 있다. 어떻게? 내가 선택한 프로그래밍 언어를 이용해 SQL문법을 작성해줌! 그래 통역!이라고 생각하자. 

  - Flask 프로젝트 때 설치했던 SQLAlchemy가 Flask와 MySQL의 연동을 도와주는 ORM 라이브러리이다.

 

ORM의 장점

  • 별도의 sql문을 작성하지 않아도 객체 지향 프로그래밍 언어로 기능 구현이 가능하며 sql문을 몰라도 작업할 수 있기 때문에 생산성이 증가한다.
  • 재사용 및 유지 보수의 편리성이 증가한다.
  • DB 마이그레이션을 쉽게 할 수 있다.

 

ORM의 단점

  • 프로젝트가 복잡해질 경우 난이도가 높아지고, 잘못 구현한 경우 속도 저하가 일어날 수 있다.
  • DB에 직접 query문을 보내는 것이 아니기 때문에 성능 저하가 발생한다.
728x90

'학습 > 개념정리' 카테고리의 다른 글

개념정리 :: CORS?  (0) 2022.02.23
개념정리 :: JWT?  (0) 2022.02.22
개념정리 :: git ? github?  (0) 2022.02.20
개념정리 :: HTTP vs HTTPS?  (0) 2022.02.16
개념정리 :: API란?  (0) 2022.02.16