본문 바로가기
카테고리 없음

[Node.js] ORM은 뭘 써야 할까?

by hbIncoding 2024. 10. 7.

1. 일단 ORM이 무엇인가?

  • ORM(Object-Relational Mapping)은 객체 지향 프로그래밍에서 객체와 관계형 데이터베이스의 데이터를 연결해주는 기술이다.
  • 직접 SQL을 작성하지 않고도 데이터베이스 작업을 진행한다.
  • 데이터베이스의 테이블을 애플리케이션의 클래스나 객체로 매핑한다.

2. ORM의 장점

  • 생산성 향상 : SQL을 직접 작성할 필요 없으니, DB작업을 최소화 할 수 있다.
  • 유지보수 용이 : DB 관련 코드가 줄어들고, 비즈니스 로직과 DB로직이 분리되어 유지관리가 쉬워진다.
  • 재사용성 : ORM을 사용하면 DB시스템을 쉽게 교체하고, 동일한 코드로 여러 DB에 재사용이 가능하다.

3. 대표적인 언어별 ORM

  • Node.js의 TypeORM, Sequelize 등
  • Java의 Hibernate
  • C#의 Entity Framework
  • Python의 SQLAlchemy 

4. 단점

  • ORM으로 표현할 수 없는 쿼리가 있다.
  • 성능이 떨어질 수 있다. 직접 쿼리를 작성하고 요청하는 것 보다 당연히 ORM을 거치기 때문이다.

 

5. Sequelize vs TypeORM

  • Sequelize
    • 유연성 : 폭넓은 호환성으로 다양한 DB를 이용한 프로젝트에 선택
    • 활발한 생태계 : 다양한 문서와 대규모 커뮤니티를 통한 문제 해결 리소스
    • 원시 SQL 쿼리 : 쿼리를 직접 실행 시킬 수 있다.
  • TypeORM
    • TypeScript 통합 : TypeScript를 수용하여, 타이핑, 컴파일 타입을 검사
    • Decorators : 데코레이터를 사용하면 TypeScript 클래스에서 바로 엔티티와 관계를 정의
    • 자동 마이그레이션 : 데이터베이스 스키마 변경을 단순화 한다.
  • 그외
    • Mongoose : MongoDB 전용
    • Prisma : 타입 안전성과 자동 마이크레이션을 제공. ts 프로젝트에서 유리.
  • 하지만 주로 사용하는건 Sequleize 와 TypeORM
    • 둘 중 무얼 선택하느냐는 프로젝트의 요구사항과 TypeScript에 대한 친숙도에 따라 달라진다.
    • Sequelize는 유연성과 성숙함을 제공하여 광범위한 프로젝트에 적합하지만 TypeORm은 TypeScript 중심 애플리케이션에 대한 유형 안전성과 완활한 통합을 제공한다.

6. 정성적 비교

 

  • 다운로드 수는 근 5년간 Sequelize가 더 많았으나 Typeorm도 많이 치고 들어왔다. 지금은 거의 비슷하다고 할수 있을 것 같다.
  • 성능의 경우 조건에 따라 차이가 있겠지만 typeorm이 sequelize에 비해 상대적으로 빨랐고, prisma도 성능에서는 typeorm에 뒤쳐졌다.

 

 

 

 

6. 참고

1) sequelize vs TypeORM : https://smit90.medium.com/sequelize-vs-typeorm-choosing-the-right-orm-for-your-node-js-project-a6f8a0cd2b8c

 

Sequelize vs. TypeORM: Choosing the Right ORM for Your Node.js Project

Dive into a comparison of Sequelize and TypeORM to find the perfect ORM for your Node.js application. 🔄

smit90.medium.com

 

2) TypeORM 개념 및 설치 : https://aonee.tistory.com/77

 

TypeORM 개념 및 설치 및 사용방법

👉 Typeorm 공식문서 ORM 개요 Object-relational mapping, 객체-관계 매핑 객체와 관계형 데이터베이스의 데이터를 자동으로 매핑(연결)해준다. 객체 지향 프로그래밍은 클래스를 사용하고, 관계형 데이

aonee.tistory.com

 

3)다운로드와 성능 지표: https://codebibimppap.tistory.com/16