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
2) TypeORM 개념 및 설치 : https://aonee.tistory.com/77
3)다운로드와 성능 지표: https://codebibimppap.tistory.com/16