Dev

TypeORM - 버전 0.3 && ORM이란?

hou27 2022. 3. 28. 00:53

지금까지 typeORM 0.2.45 버전을 사용 중이었다.

 

최근 0.3.4까지 업데이트가 되며 확인을 해보았더니 정말 많은 변화가 있었다.

https://github.com/typeorm/typeorm/blob/master/CHANGELOG.md

 

GitHub - typeorm/typeorm: ORM for TypeScript and JavaScript (ES7, ES6, ES5). Supports MySQL, PostgreSQL, MariaDB, SQLite, MS SQL

ORM for TypeScript and JavaScript (ES7, ES6, ES5). Supports MySQL, PostgreSQL, MariaDB, SQLite, MS SQL Server, Oracle, SAP Hana, WebSQL databases. Works in NodeJS, Browser, Ionic, Cordova and Elect...

github.com

 

 

우선 그전에 ORM이란 무엇인지 짚고 넘어가도록 하겠다.

 

ORM

- Object Relational Mapping(객체 관계 매핑)

 

우리가 사용하는 데이터베이스는 Table로 이뤄져 있으며,

반면 애플리케이션은 객체를 통해 해당 데이터베이스를 다루게 된다.

 

그 때문에 우리가 프로그래밍한 객체와 데이터 베이스 모델 간 차이가 존재한다.

서로 호환되지 않기 때문에 그러한 데이터를 변환해주는 것이다.

 

즉, 객체에 맞춰서 SQL을 자동으로 DB에 맞게 생성해주어 DB 작업을 수월하게 해주는 것이다.

 

기존에 ORM 프레임워크가 없던 때에는 query를 그에 맞게 날려주어 RDBMS를 사용하다가,

ORM 프레임워크를 사용하기 시작하면서

직관적인 메서드를 통해 데이터 베이스의 데이터를 조작할 수 있게 되었고,

나아가 객체지향적 프로그래밍에 포커스를 맞출 수 있게 되었으며,

기본에 충실할 수 있게 되었다고 한다.

 

위의 TypeORM 또한 방금 말한 ORM 프레임워크 중 하나이며,

typescript, javascript 용 ORM이다.

 

 

 

문서를 찾아본 계기가 최근 사용자 정의 레포지토리를 만들어보다가 본 건데,

문서를 확인해보면 알 수 있듯이

 

이전까지의 방식은 모두 삭제되고, 새로운 방식만이 남았다.

 

사실 이전에 존재하던 Abstract Repository 같은 것의 용도를 정확히 이해하지 못했었는데,

내가 이해 못 한 것과 삭제된 것이 어느 정도 비슷한 맥락이지 않을까...?

 

 

또 where 옵션은 위와 같이 사용할 수 있으며,

relation option이 위처럼 변경되었는데, 정말 섹시하다는 생각이 든다.

 

기존의 배열로 묶던 방식과 달리

이제는 간편하게 여러 relation을 불러올 수 있겠다는 생각이 든다.

그리고 select를 사용해서 relations의 column들도 선택할 수 있게 되었다!!

 

 

조금만 살펴봐도 정말 많은 변화가 있음을 알 수 있으며,

이제 쿼리 빌더를 사용하지 않고 repository의 메서드만으로도 깔끔하게 코드를 작성할 수 있을 것 같다는 생각에

아직 제대로 활용해보지 못했지만 프리즈마를 맛보기보다 typeORM을 제대로 공부해보고 싶다는 생각이 들게 해 준 업데이트였다.

 

정말 많은 변화가 있어 도입하려고 하니 많은 항목을 수정해야한다.

그래서 추후에 새 프로젝트에 typerom@0.3을 적용해볼 생각이다.