티스토리 뷰

안녕하세요, Prisma를 사용하다가 GraphQL과 Prisma는 같은 기술이 아니라는 것을 알게 되었습니다.

"도대체 ORM은 무엇일까?"라는 의문이 들어서 작성해 볼려고 합니다.

 

ORM이란?

ORM은 Object Relational Mapping 입니다, 즉 객체-관계 매핑의 줄임말로써 객체-관계 매핑을 풀어서 설명하자면 우리가 OPP(Object Oriented Programing)에서 쓰이는 "객체"라는 개념을 구현한 클래스와 RDB(Relational DataBase)에서 쓰이는 데이터인 "테이블"을 자동으로 매핑(연결)하는 것을 의미합니다. 하지만 클래스와 테이블은 서로가 기존부터 호환가능성을 두고 만들어진 것이 아니기 때문에 불일치가 발생하게 됩니다. ORM을 통해서 객체 간의 관계를 바탕으로 SQL문을 자동으로 생성하여서 불일치를 해결하게 됩니다. ORM을 이용하면 따로 복잡하고 어렵게 SQL문을 짤 필요가 없이 객체를 통해 간접적으로 데이터베이스를 조작할 수 있게 됩니다.

 

ORM의 장점과 단점은?

장점

완벽한 객체지향적인 코드

ORM을 이용하면 SQL문이 아니라 클래스의 메서드를 통해서 데이터베이스를 조작할 수 있어서 개발자가 객체 모델만 이용해서 프로그래밍을 하는 데 집중할 수 있게 해 줍니다. SQL문을 사용하면서 같이 필요한 선언문과 할당, 종료 같은 부수적인 코드가 사라지거나 줄어들며, 각종 객체에 대한 코드를 별로도 작성하여서 코드의 가독성을 높일 수 있습니다. 객체지향적 접근과 SQL의 절차적/순차적 접근이 혼재되어있떤 기존 방식과 달리 오직 객체지향적 접근만 고려하면 되기 때문에 생산성이 증가하게 됩니다.

재사용, 유지보수, 리팩토링 용이성

ORM은 기존의 객체와 독립적으로 작성되어 있고, 객체로 작성되었기 때문에 재활용할 수 있습니다, 매핑하는 정보가 명확하기 때문에 ERD(Entity-Relationship Diagram)를 보는 의존도를 낮출 수 있습니다.

DBMS(DataBase Management System) 종속성 하락

객체 간의 관계를 바탕으로 SQL문을 자동으로 생성하고, 객체의 자료형 타입까지 사용할 수 있기 때문에 RDBMS(RDBMS(Relational Database Management System)를 교체하는 큰 작업에도 리스카 적어지고 드는 시간이 줄어들게 됩니다,

단점

ORM이 모든 걸 해결해줄 수 없다.

ORM을 사용하는 것은 매우 편리하지만 그만큼 신중하게 설계해야합니다. 프로젝트의 복잡성이 커질 수록 난이도도 올라가고 부족한 설계로 구현이 되어 버리는 경우 속도 저하와 일관성을 무너뜨리는 문제점이 발생할 수 있습니다. 또한 일부 자주 사용되는 대형 SQL문은 속도를 위해 별도의 튜닝이 필요하기 때문에 결국 기존에 사용하던 SQL문을 써야할 수도 있습니다.

 

ORM 프레임워크들

JPA(Java Persistence API)/Hibernate

JPA(Java Persistence API)는 자바의 ORM 기술 표준으로 인터페이스의 모음입니다. 이러한 JPA 표준 명세를 구현한 구현체가 바로 Hibernate 입니다.

Sequelize

Sequelize는 Postgres, MySQL, MariaDB, SQLite 등을 지원하는 Promise에 기반한 비동기로 동작하는 Node.js ORM입니다.

현재 제가 하고 있는 프로젝트에서도 Sequelize를 사용하고 있습니다.

Django ORM

python기반 프레임워크인 Django에서 자체적으로 지원하는 ORM 입니다.

 

출처

 

최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
글 보관함