[TIL] 20241112 TIL : Nest.js, TypeORM

Jaeyoung Ko·2024년 11월 12일

오늘 주로 한 일은 이제 리액트 프로젝트에 대한 백엔드 구성을 위한

Nest.js와 MySQL TypeORM에 관한 것

(1) Nest.js

언제나 새로운 언어, 기술, 개발환경, 라이브러리, 프레임워크 등에 대해 알아볼 때와 마찬가지로 해당 기술의 공식 홈페이지를 참고하는 것보다 좋은 것은 없다.




Nest.js는 서버 애플리케이션 개발을 위한 Node.js 프레임워크로, Express.js를 기반으로 채택하여 그 위에 미들웨어, IoC 등 많은 기능을 구현해 놓은 프레임워크이다.

Nest는 정형화된 아키텍쳐 기반으로 모듈화가 잘 되어 있는 것이 Express와 비교하여 가장 큰 특징이라고 볼 수 있기 때문에, 코드의 재사용성과 유지보수에 유리한 점 때문에 대규모 애플리케이션에 더 적합하다고 볼 수 있다.

그리고 추가적으로 내장된 간단한 cli 제공 및 jest라는 테스트 환경을 제공한다.




(2) Nest vs Express

Express와의 비교가 나온 김에, 간단히 express와의 선택 기준에 대해서 이야기하면 다음과 같이 정리할 수 있다.

Express를 선택하기 유리한 조건

  • 경량형으로 빠르고 단순한 설정으로 시작

NestJS를 선택하기 유리한 조건

  • 기본 설정으로 TypeScript 사용

  • 대규모 애플리케이션

  • DI 의존성 주입




(3) Nest.js 시작해보기

npm i -g @nestjs/cli
nest new project-name




(3) TypeORM이란?

이에 설명하기에 앞서서, "ORM"의 개념부터 짚고 넘어가자.


ORM (Object-Relational Mapping)

객체 object와 관계형 데이터베이스 RDB를 자동으로 매핑시켜주는 도구를 의미한다.

OOP로서 클래스 기반의 객체 모델과,

Relation 테이블 기반의 관계형 DB 사이에 불일치가 존재하는데,

ORM은 객체간의 관계를 바탕으로 SQL을 자동으로 생성하여, 객체 모델과 관계형 데이터베이스간의 불일치를 해결한다.


이러한 ORM이 가져다 주는 큰 효과를 살펴 보면,

  • 객체 지향적인 코드를 통해 직관적으로 로직을 만드는 데에 집중하도록 도와준다.

  • DBMS와 ERD에 대한 종속성과 의존도를 낮춘다.

와 같은 장점을 볼 수 있다.

그래서 보통의 Express에 자주 사용하는 ORM은 Sequelize,

그리고 TypeScript를 사용하는 환경에서는 주로 Nest와 함께 사용하는 ORM으로 TypeORM이 있다.


일단 작업 중에 있는데 처음에 MySQL이 문제를 일으켜서 시간을 너무 오래 허비했다.

Could not acquire management access for administration.

대충 관리자 명령어를 위해 PATH 환경 변수에 C:\Windows\System32 추가하라고 하는데 아무리 해도 해결되지 않았다.

구글링을 통해 해결했는데 이 부분은

MySQL 8 버전이 한국어 인코딩과 관련하여 문제를 일으키는 듯하다.

[윈도우 언어 설정] > [기본언어설정] > [시스템 로캘변경] > [세계 언어 지원을 위해 UTF-8 인코딩 사용]

이 과정을 거치면 해결이 된다.

profile
안녕하세요, 고재영입니다. 언제나 즐겁게 살려고 노력합니다.

0개의 댓글