ORM(Object Relation Mapping) 이란?

ORM(Object Relation Mapping) 대해 알아봅시다.

요즘 많이 사용되는 ORM의 개념에 대해 알아보았습니다.

ORM (Object Relation Mapping)

ORM 이란?

ORM(Object Relation Mapping)은 뜻 풀이 그대로 ‘객체와 관계형 데이터베이스의 매핑’ 입니다.

Java 와 같은 객체지향언어(OOP: Object Oriented Programming)의 클래스와
RDB(Relation DataBase)의 테이블을 매핑하는 것을 의미합니다.

ORM을 사용하면 SQL Query가 아니라 객체의 메서드로 데이터를 조작할 수 있습니다.

예를 들어 스프링의 JDBC vs JPA 로 각각 회원을 조회한다고 해볼게요. JDBC의 경우 SELECT * FROM users라는 쿼리를 작성해서 실행해야 하지만, JPA의 경우 user.findAll() 라는 메서드 호출로 조회가 가능합니다.

ORM 장단점

간단하게 DB 설정과 테이블 매핑되는 클래스 선언만으로도 해당 테이블의 CRUD를 사용 가능합니다.
그래서 ORM을 사용하면 기본적인 프로젝트의 CRUD 구축이 어마무시하게 빨라지는 장점이 굉장히 큽니다.

장점

  • 객체지향적인 코드로 더 직관적으로 비지니스 로직에 집중할 수 있도록 도와줍니다.
    • 선언문, 할당, 종류 와 같은 부수적인 코드가 없어지거나 줄어듭니다.
    • 객체마다 코드를 별도로 작성하기 때문에 코드의 가독성이 높아집니다.
    • SQL의 절차적이고 순차적 접근이 아닌 객체지향적 접근으로 생산성을 높입니다.
  • 재사용성 및 유지보수의 편리성이 증가합니다.
    • ORM은 독립적으로 작성되어 있고, 해당 객체들을 재활용 할 수 있습니다.
    • 매핑 정보가 명확하고, ERD를 보는 것에 대한 의존도를 낮출 수 있습니다.
  • DBMS(Database Management System)에 대한 종속성이 줄어듭니다.
    • 대부분의 ORM은 DB에 종속적이지 않기 때문에, 다른 데이터베이스의 자료형 타입도 유효합니다.
    • 개발자는 객체에 집중할 수 있고, DBMS를 교체하는 큰 작업에도 적은 리스크와 시간이 소요됩니다.
    • 자바의 경우 equals, hashCode 의 오버라이드 기능을 이용할 수 있고, 간결하고 빠른 가공이 가능합니다.

단점

  • ORM 으로만 서비스를 구현하기는 어렵습니다.
    • 단순한 CRUD의 경우에는 편하지만, 서비스가 커지면 커질수록 복잡도가 커지면서 사용 난이도가 급격하게 올라갑니다.
    • 잘못 구현된 경우 심각한 속도저하 문제가 있을 수 있습니다. (JPA의 N+1 문제)
    • 자주 사용되는 대형 쿼리의 경우는 속도를 위해 별도의 튜닝이 필요한 경우가 있습니다.
  • 프로시저가 많은 시스템에서는 ORM 의 장점을 활용하기 어렵습니다.
    • 이미 프로시저가 많은 경우에는 이를 객체로 바꾸는데 있어서, 생산성 저하와 리스크가 발생할 수 있습니다.

© 2021. All rights reserved.

Powered by Hydejack v9.1.6