320x100
320x100

ORM (Object Relational Mapping)

- 객체와 관계형 데이터베이스를 연결해주는 작업

 : 클래스와 테이블을 매핑

 : 객체를 통해 간접적으로 데이터베이스의 데이터를 다루는 것

 

- 장점

 : 객체 지향적 코드를 통해 직관적으로 DB를 다룰 수 있음 

 ㆍCRUD를 위한 긴 SQL 문장을 작성할 필요가 없어 비즈니스 로직에 집중할 수 있다

※ CRUD

  = 데이터테이블을 다루기 위한 Create, Read, Update, Delete 작업

 

 : 매핑 정보가 명확하기 때문에 ERD를 보는 것에 대한 의존도가 낮음

 ㆍ재사용 및 유지보수의 편리성 증가

 

 : DBMS에 대한 종속성 감소

 ㆍDBMS를 교체해도 비교적 적은 리스크와 시간이 소요됨

 

- 단점

 : 완벽한 DB에 대한 접근을 구현하기 어려움

 ㆍ사용하기 편리하나 설계에는 신중함 필요

 ㆍ프로젝트가 복잡해질 경우 난이도 상승

 

 : 프로시저가 많은 시스템에서는 ORM의 객체지향적인 장점을 활용하기 어려움

 ㆍ프로시저가 많으면 다시 객체로 바꿔야 하는 문제가 발생하여 생산성의 저하와 리스크 존재

※ 프로시저 

  = 특정 작업을 위한 프로그램의 일부. 함수와 같은 의미

 

=> ORM은 언어별로 있으며, 별도의 프레임워크를 활용하기도 함

 

 

 

 

 

ORM을 위한 프레임워크

Sequelize

- NodeJS에서 가장 많이 사용하고 있는 ORM

 : NodeJS에 특화된 ORM

 

- 지원 DBMS

 : MySQL, PostgreSQL, MAriaDB, SQLite, MS SQL

 

- 특징

 : Promise(비동기 작업 제어방식)을 기본적으로 지원

 : Chaining을 통해 값을 전달하거나 연속된 일련의 작업 처리 가능

 : 트랜잭션, Relation, read replication등을 지원

 

- 장점

 : 복잡한 비동기 코드를 깔끔하고 쉽게 작성 가능

 : Error Handling에 대한 깔끔한 처리 가능

 

 

 

Prisma

- GraphQL스키마를 기반으로 데이터베이스를 자동생성

※ GraphQL

 = facebook에서 만든 Graph Query Language

 = 애플리케이션 쿼리 언어로써 기존의 REST API의 한계점을 극복하고자 나온 통신 규약

 

- 특징

 : 요청메시지의 형태가 값이 없는 JSON과 비슷하며 받는 데이터는 JSON형식임

 

- 장점

 : 단일 요청으로도 원하는 데이터를 한번에 가져올 수 있음

 : type system을 지원

 : GraphQL 등의 강력한 도구 지원

 : 확장성이 높음 

=> 공식문서 

 : https://www.prisma.io/docs/understand-prisma/prisma-introduction-what-why-how-j9ff/

 

 

 

 

 

 

 

Refference

 

[DB] ORM이란 - Heee's Development Blog

Step by step goes a long way.

gmlwjd9405.github.io

 

 

ORM이란?

이 포스트에서는 ORM의 기본적인 개념과 장단점을 설명하고 Sequelize와 Prisma의 장단점에 대한 내용을 다룹니다. 🤔ORM이란?? ORM(Object-relatinal mapping)이란 객체(클래스)와 관계(관계형 데이터 베이스)

velog.io

 

300x250
728x90