ORM(Object-Relational Mapping)

박세현·2024년 10월 9일
0

추가공부

목록 보기
3/12
post-thumbnail

ORM(Object-Relational Mapping)

객체-관계 매핑이라는 개념으로, 객체 지향 프로그래밍 언어에서 사용되는 객체(클래스)를 데이터베이스의 테이블과 연결(매핑)하는 기법을 말합니다. ORM을 사용하면 개발자가 자바나 파이썬 같은 객체 지향 언어로 데이터베이스의 데이터를 마치 객체처럼 다룰 수 있게 됩니다. 이를 통해 SQL과 같은 데이터베이스 언어를 직접 사용하지 않고도 데이터베이스 작업을 쉽게 수행할 수 있습니다.

ORM의 주요 개념

1. 객체(Object)

자바, 파이썬 등의 객체 지향 언어에서 사용되는 클래스의 인스턴스입니다. 예를 들어, User라는 클래스가 있을 때, 이 클래스는 데이터베이스의 users 테이블과 매핑될 수 있습니다.

2. 테이블(Table)

관계형 데이터베이스에서 데이터를 저장하는 구조로, 객체 지향 언어의 클래스와 대응됩니다. 예를 들어, User 클래스의 필드들은 users 테이블의 열(column)에 매핑됩니다.

3. 매핑(Mapping)

클래스의 속성(필드)과 데이터베이스 테이블의 열(column)을 연결하는 과정입니다. 이를 통해 객체의 속성을 변경하면 자동으로 데이터베이스의 관련된 데이터가 업데이트되며, 데이터베이스의 데이터를 가져올 때는 객체로 변환됩니다.

ORM의 주요 장점

1. 데이터베이스 의존성 감소

ORM을 사용하면 애플리케이션 코드에서 데이터베이스의 특성에 의존하지 않고 데이터를 처리할 수 있습니다. 이는 코드의 이식성을 높이며, 데이터베이스를 변경하더라도 최소한의 코드 수정으로 대응할 수 있습니다.

2. 생산성 향상

SQL 쿼리를 직접 작성하지 않고도 객체 지향 방식으로 데이터를 다룰 수 있어, 개발자가 더 쉽게 데이터베이스와 상호작용할 수 있습니다. 이를 통해 복잡한 데이터베이스 쿼리나 조작에 대한 코드량이 줄어듭니다.

3. 유지보수 용이

SQL 쿼리를 명시적으로 작성하지 않아도 되므로 데이터베이스 관련 코드를 수정하기 쉽고, 개발자가 직접 SQL의 세부 사항을 관리하지 않아도 됩니다. 따라서 유지보수가 훨씬 간단해집니다.

4. 객체 지향 설계

ORM을 사용하면 애플리케이션의 전체 설계를 객체 지향적으로 유지할 수 있습니다. 데이터베이스에서 데이터를 불러올 때도 SQL이 아닌 객체를 직접 다루게 되어, 객체 지향 패러다임을 유지한 채로 개발이 가능합니다.

ORM의 동작 원리

ORM은 주로 다음과 같은 작업을 자동으로 처리합니다.

1. CRUD 작업 자동화

객체를 생성하면 데이터베이스의 행(row)으로 삽입(Create)되고, 객체를 수정하면 행이 업데이트(Update)됩니다. 객체를 삭제하면 데이터베이스에서 해당 행이 제거(Delete)됩니다. 또한, 데이터베이스에서 객체 형태로 데이터를 조회(Read)할 수 있습니다.

2. SQL 쿼리 생성

개발자가 직접 SQL 쿼리를 작성하지 않아도, ORM이 자동으로 SQL 쿼리를 생성하여 데이터베이스와 통신합니다.

3. 관계 매핑

클래스 간의 연관 관계(1:1, 1, N)를 데이터베이스의 테이블 관계로 매핑할 수 있습니다. 예를 들어, 한 명의 사용자가 여러 개의 주문을 할 수 있다면, 사용자와 주문 클래스 간의 관계를 매핑하여 데이터베이스에서도 이를 반영할 수 있습니다.

ORM의 한계 및 단점

1. 복잡한 쿼리의 비효율성

ORM은 기본적인 CRUD 작업을 자동화하는 데는 강력하지만, 복잡한 SQL 쿼리가 필요한 경우 성능 이슈가 발생할 수 있습니다. 특히, 여러 테이블을 조인하거나 복잡한 조건을 다루는 쿼리는 직접 SQL을 작성하는 것보다 효율적이지 않을 수 있습니다.

2. 데이터베이스 최적화 문제

ORM은 데이터베이스에 최적화된 쿼리를 항상 생성하지 않기 때문에, 대량의 데이터를 다룰 때 성능 저하가 발생할 수 있습니다. 이 경우, ORM의 자동화된 쿼리 대신 직접 SQL을 작성해 최적화를 해야 할 때도 있습니다.

3. 추가 학습 필요

ORM을 처음 사용하는 개발자는 ORM을 제대로 이해하기 위해 학습해야 할 부분이 많습니다. 특히, ORM에서 제공하는 매핑 규칙과 동작 방식을 익히는 데 시간이 필요할 수 있습니다.

대표적인 ORM 프레임워크

  • Hibernate (자바)
  • JPA (자바 표준 명세)
  • Django ORM (파이썬)
  • SQLAlchemy (파이썬)
  • Entity Framework (C#)

이처럼 ORM은 객체 지향 언어와 관계형 데이터베이스 사이의 간극을 줄여주며, 개발 생산성을 크게 높여주는 도구입니다.

profile
귤귤

0개의 댓글