본문 바로가기

Back End/DataBase

[ORM] ORM이란?

ORM이란?


개요

  JAVA의 JPA를 공부하면서, ORM 기술 표준이란 말을 듣고 ORM이 무엇인지에 대해 알아본다.

 

목차

 

소개

ORM 이란?
ORM이란 Ojbect Relational DataBase의 약자로, 언어 그대로 객체(Object)와 RDB의 테이블을 매핑한다는 의미이다.

 

 

출처: Sabarish Rajamohan

 

ORM 등장 이전의 시대

 

그렇다면 기존 ORM 등장 이전에는 어떤 문제들이 존재하고 있을까?
기존 프로그래밍에서는, 객체는 객체의 클래스를 사용하고 RDB는 테이블을 사용하기 때문에 객체 모델과 RDB 모델 사이의 주된 목적이 맞지 않아 개발을 해야하는 주체의 불일치가 발생하게 되었다.

이때, ORM은 이런 불일치를 해결하기 위해 중간에서 두 객체를 매핑해주는데 이러한 계층을 Persistence Layer라고 하며 기존의 Entity Bean이 수행하는 Persistence Bridge의 역할을 ORM 패러다임의 Entity 방식으로 가능하게 해주었다.

 

ORM의 장점

 

  1. 개발자는 객체모델만을 신경쓰며 RDB 모델을 신경쓰지 않고 로직에 집중할 수 있게 된다.
    1.   SQL문이 아닌 클래스의 메서드를 통해 DB를 조작할 수 있게 된다.
    2.   RDB 모델을 위한 선언문, 할당, 종료와 같은 부수적인 코드를 작성하지 않아도 된다.
    3.   비즈니스 로직만을 신경쓰며 구현하므로, 더 직관적인 코드의 작성이 가능하게 된다.
  2. 재사용 및 유지보수의 편리성이 증가한다.
    1. 매핑 정보가 명확하여, 기존 ERD만 보던 의존도를 낮출 수 있게 된다.
  3. DBMS에 대한 종속성을 줄일 수 있게 된다.
    1. 개발자는 객체에 집중해 로직을 구현하므로, DBMS를 교체하게 되더라도 적은 시간과 리스트를 할애할 수 있게된다.
    2.  데이터를 가져올 때, 자바의 메소드를 사용할 수 있게 됨으로 간결하고 빠른 수정이 가능하게 된다.
    3.   대부분의 ORM 솔루션은 DB에 종속적이지 않다.

 

ORM의 단점

 

  1. 복잡한 로직의 경우, 조건에 맞도록 객체를 튜닝하는것보다 Query를 작성하는 것이 더 효율적일 수 있게 된다.
  2. 프로젝트가 복잡해질수록, 다양한 기능이 도출되고 ORM보다 Query작성이 효율적인 경우가 존재하여서, 상황에 따라 속도 저하나 성능 저하의 문제가 발생할 수 있게 된다.

'Back End > DataBase' 카테고리의 다른 글

[Mysql] 쿠팡이츠(Coupang Eats) ERD 설계  (0) 2021.10.01
[기본개념] RocksDB란?  (0) 2021.07.05