본문 바로가기

학습노트/기초지식

[ORM] Object Relational Mapping이란?

  프로그래밍을 하다보면 자신이 원하는 서비스를 만들고 싶을 때 많은 개념들을 접하게 됩니다. 저도 마찬가지로 프로젝트 진행중에 ORM이라는 개념을 보게되어 공부하고 정리하려고 합니다.

 

1. ORM이란?

  Object Relational Mapping의 약자로 관계형 데이터베이스 관리 시스템(RDBMS, Relational Database Management System)와 객체 지향 프로그래밍 언어(OOP, Object Oriented Programming)간에 호환되지 않는 데이터를 맵핑해주는 프로그래밍 패러다임이다.

 

 

2. 사용 예

  클래스로 스키마(Schema)를 매핑하고, 메소드(Method)로 쿼리(Query)를 작성하여 객체로 이뤄진 테이블을 가져온다.

 

 

3. ORM 장점

- SQL문을 사용하지 않고 사용하던 객체 지향 프로그래밍 언어로 구현이 가능하다.(생산성 증가)

- 선언문, 할당, 종료같은 부가적인 코드가 줄어든다.

- DBMS(Database Management System)에 종속되지 않는다.

- 재사용 및 유지 보수가 편리하다.

 

 

4. ORM 단점

- 직접 SQL문을 사용하는 것보다 복잡할 수 있다.

- 프로젝트의 복잡성이 높아질경우 난이도가 올라간다.

 

 

5. ORM 프레임워크

- Sequelize: Node.js에서 가장 많이 사용되고 있는 ORM이다. MySQL, PostgreSQL, SQLite, MSSQL, MariaDB등을 지원한다. 가장 큰 장점은 Promise(비동기작업 제어방식)를 기본적으로 지원해준다.

 

그 외

C# Entity Framework Core
PHP Eloquent ORM, Laravel
Java Hibernate ORM
Python Django
Rudy Rudy on Rails
Node.js Sequelize, Prisma(GraphQL기반)