ORM이란?

임수정·2023년 8월 16일
0
post-thumbnail

ORM(Object-relational mapping)

객체지향 프로그래밍(Object-Oriented-Programming)과 관계형 데이터베이스(Relational-Database)사이의 호환되지 않는 데이터를 변환하는 기술입니다. 즉, ORM은 이렇게 서로 다른 객체와 관계형 데이터 시스템(RDBMS)을 연결(매핑)해주는 중간 매개체 역할을 합니다.

ORM 특징

  1. 객체-관계 매핑
  2. CRUD 작업 간소화 : ORM을 사용하면 데이터를 생성(Create), 읽기(Read), 수정(Update), 삭제(Delete)하는 작업을 객체의 메서드로 쉽게 수행할 수 있습니다.
    (ex, save(),findAll(),update(),delete())
  3. 쿼리 언어와의 분리 : ORM은 대부분 SQL 쿼리를 직접 작성하지 않고도 데이터를 다룰 수 있게 해줍니다.
  4. MVC 패턴에서 모델(Model)을 기술하는 도구 : 데이터와 관련된 작업을 수행하는 Model에서 ORM을 활용하게 되면 로직을 더 직관적이고 객체 지향적으로 구현할 수 있습니다.

ORM을 사용하는 이유

ORM의 특징의 대부분이 ORM을 사용하는 이유가 됩니다.

하지만, 객체 지향 프로그래밍은 클래스를 이용하고 관계형 데이터베이스는 테이블을 이용하는데 객체 모델과 관계형 모델 간의 불일치가 존재합니다. 이는, 개발시에 문제가 발생할 수 있는 중요한 이슈 중 하나입니다.

객체는 클래스와 인스턴스로 구성되며, 상속, 다형성 등의 개념을 포함합니다. 하지만 관계형 데이터베이스는 테이블 간에 관계를 표현하며, 정규화된 스키마를 갖습니다. 이로 인해 객체와 테이블 간의 구조적인 불일치가 발생할 수 있습니다.

ORM은 데이터베이스와 객체 간의 매핑을 자동화하여 데이터베이스의 테이블을 객체로 추상화하고, 객체 간의 관계를 표현하는 방식을 지원합니다. 이를 통해 데이터베이스와 객체 간의 불일치를 최소화하고, 개발자는 객체 지향적인 방식으로 데이터베이스 작업을 처리할 수 있습니다.

ORM의 장,단점

장점

  1. 개발 생산성 향상
    • ORM을 사용하면 SQL 쿼리를 직접 작성하지 않고도 데이터베이스 작업을 처리할 수 있습니다. 이로써 개발 시간을 단축하고 생산성을 향상시킬 수 있습니다.
  2. 재사용성과 유지보수성이 뛰어남
    • ORM은 독립적으로 작성되어있고, 해당 객체들을 재활용할 수 있습니다.
    • 매핑정보가 명확하여 ERD를 보는 것에 대한 의존도를 낮출 수 있습니다.
  3. 데이터베이스 종속성 최소화
    • 특정한 데이터베이스 시스템(예: MySQL)에만 종속되지 않고, 다양한 데이터베이스 시스템(예: PostgreSQL, Oracle, SQL Server 등)과도 유연하게 연결할 수 있다는 것을 의미합니다.
    • 데이터베이스 시스템 간의 차이를 ORM이 내부적으로 처리하므로, 개발자는 데이터베이스 종류에 대한 세부 사항을 걱정하지 않아도 됩니다.

단점

  1. 미세한 수정 및 디버깅이 상대적으로 어려워짐
    • 복잡한 쿼리문 작성이 필요할 때는 ORM에서 미리 선언해 놓은 패턴에 따른 SQL 쿼리 명령만 내릴 수 있다는 점입니다.
  2. 성능 저하
    • DB에 직접 명령을 내리지 않고 한단계 중간 단계를 거쳐가기 때문에 SQL Raw 쿼리문에 비해 실행 속도가 다소 느려질 수 있습니다.

ORM 종류

  1. Hibernate
    • Java 언어를 위한 ORM으로, Java 객체와 관계형 데이터베이스 간의 매핑을 제공합니다. 특히 Java EE(Java Platform, Enterprise Edition) 환경에서 많이 사용됩니다.
  2. Django ORM
    • 파이썬 웹 프레임워크인 Django에 내장된 ORM입니다. Django 기반의 웹 애플리케이션에서 사용되며, 파이썬 객체와 데이터베이스 간의 매핑을 간편하게 처리합니다.
  3. Sequelize
    • JavaScript(Node.js) 환경에서 사용되는 ORM으로, MySQL, PostgreSQL, SQLite, MSSQL 등 다양한 데이터베이스를 지원합니다.
  4. Typeorm
    • Node.js 기반의 ORM으로, TypeScript 및 JavaScript로 개발된 데이터베이스 작업을 객체 지향적으로 처리하는 라이브러리입니다. 다양한 데이터베이스 시스템을 지원하며 TypeScript와의 통합을 통해 타입 안정성을 제공합니다.

[참고한 자료]
1. ORM의 개념
2. ORM이란?

profile
부족함을 인정하고 채워나가는 개발자! (Node.js 개발자)

1개의 댓글

comment-user-thumbnail
2023년 8월 16일

많은 것을 배웠습니다, 감사합니다.

답글 달기