article thumbnail image
Published 2022. 8. 4. 12:26

데이터베이스에 있는 데이터를 직접 다루기에는 복잡한 명령문을 모두 암기해야 하는 불편함이 있다. 나는 매우 기본적인 명령어만 실습해 보았는데 충분히 그 고충을 알 수 있었다. 이를 해결해주기 위해서, 정확히는 불편함을 해소시켜주기 위해서 우리에게 친숙한 코드로 데이터를 다루도록 도와주는TypeORM에 대해서 배워보았다.


ORM이란?

 

ORM이란 Object Relational mapping, 객체 관계 매핑 이라는 전혀 알 수 없는 말의 약자이다. 객체의 관계를 지어준다는 뜻인가? 정확히는 관계형 데이터베이스를 객체러럼 쉽게 표현하고 사용하도록 도와준다는 뜻이다. 그렇다면 또 관계형 데이터베이스는 무엇인가? 꼬리에 꼬리를 무는 궁금증.. 관게형 데이터 베이스란 나중에 더 자세히 정리할 생각이지만 일단 여기서 간단히 내가 이해한 바만 적어보자면 엑셀처럼 테이블에 데이터들을 정리해서 각각의 테이블을 합쳐서 연결시킬수 있는 데이터 저장 방식을 말하고 이를 SQL 이라고 한다. 대표적으로는 Oracle, MySQL등이 있다. 그럼 그 반대 개념은 일종의 서류봉투 같은 개념으로 이해하면 편하다 서류 봉투에 담는 서류 하나하나를 데이터라고 생각해보면 각각의 서류들이 서로 이어져 있지는 않지만 하나의 봉투에 담겨있다. 이런 관계로 저장되는 데이터 방식을 NoSQL 라고 한다. NoSQL은 대표적으로 MongoDB, Firebase, Redis 등이 있다. 따라서 정리하자면 SQL에서 DB 명령어를 쉽게 사용하기 위해서 TypeORM이라는 라이브러리를 사용하겠다! 가 되겠다.

 

ORM의 장점? 단점?

 

ORM을 활용하면 DB를 마구마구 쉽게 다룰 수 있을 것 같고 장점만 있는 것인가? 싶지만 또 모든 라이브러리(사실 라이브러리 뿐 아니라 세상의 모든이치가 그러하겠지만..) 가 그러하듯 무적은 아니다. 우선 대표적인 장점과 단점을 꼽아보았다.

 

장점

  • 객체 지향적인 코드로 인해 데이터 접근 시 좀 더 직관적이고 간결하다.
  • 각종 객체에 대한 코드를 별도로 작성하기 때문에 코드의 가독성이 올라간다.
  • 따라서 코드의 유지 보수가 용이하고 재사용성이 높다.
  • 어렵고 복잡한 DB명령어를 모두 외우지 않아도 된다.(하지만 나중에는 결국 다 배워야 한다고 한다.)

 

단점

  • ORM만으로는 완벽한 서비스 구현이 어려울 수 있다.
  • ORM이 지원해 주지 않는 타입은 어차피 다시 타입을 내가 설계해 주어야 한다.
  • 따라서 사용하기에 편리함은 있지만 설계시 좀 더 신중하게 해야하고 복잡할 수 있다.

 

TypeORM

 

 

 TypeORM은 nodeJS, Javascript, Typescript 등 다양한 플랫폼에서 활용 가능한 ORM이지만 특히 Typescript와 관계형 데이터 베이스를 조합할때 자주 사용된다. 공식 문서에 따르면 TypeORM은 다른 ORM들과는 달리 Active Record와 Data Mapper 패턴을 모두 지원하므로 확장성이 높고 유지 관리가 용이한 방식으로 코드를 작성하도록 도와준다고 한다. Active Record란 모델 내에서 데이터베이스에 엑세스하는 접근 방식을 말하며 Data Mapper는 모델 대신 레포지토리 내의 데이터베이스에 엑세스하는 접근 방식을 말한다. 또한 Typeorm을 사용하면 entity 파일에 데이터들의 형식과 관게를 지정해주면 자동으로 db에 테이블을 만들어 준다. 

 

'오늘의 공부 정리' 카테고리의 다른 글

13. 결제 서비스 구현하기 (feat. iamport)  (0) 2022.08.05
12. NestJS 폴더 구조  (0) 2022.08.04
10. TypeScript (부제_타입추론)  (0) 2022.08.03
09. Husky  (0) 2022.07.29
08. ESLint & Prettier  (0) 2022.07.28
복사했습니다!