IT/NestJS

[NestJS] NestJS와 TypeORM을 활용한 데이터베이스 연동 - 1

2023. 8. 8. 11:10
오늘의 명언

“ 일이 재미있으면 인생은 낙원이다. 일이 의무라면 인생은 지옥이다. ”

- Gorky (고리키)
목차
  1. TypeORM 이란?
  2. TypeORM 주요 기능
  3. 1. 엔티티(Entity) 및 리포지토리(Repository)
  4. 2. 마이그레이션(Migration)
  5. 3. 쿼리 빌더(Query Builder)
  6. 4. 트랜잭션(Transactions)
  7. 데이터베이스 설치 - PostgreSQL
  8. 1. Windows에서 PostgreSQL 설치하기
  9. 2. Mac에서 PostgreSQL 설치하기
  10. 3. pgAdmin 설치
  11. 4.  PostgreSQL 실행
  12. 5.  pgAdmin에서 데이터베이스 생성
  13. NestJS에서 모듈 설치하기
300x250

이번 포스팅에서는 NestJS에서 TypeORM을 설치하고 활용해서

데이터베이스 연동에 대해서 설명해 볼까 합니다.

 

TypeORM 이란?

TypeORM은 TypeScript를 기반으로 한 ORM(Object-Relational Mapping) 라이브러리로, 데이터베이스와의 상호작용을 추상화하여 개발자가 SQL 쿼리 대신 객체 지향적인 방식으로 데이터베이스를 다룰 수 있도록 도와줍니다. ORM은 객체와 데이터베이스 테이블 간의 매핑을 처리하여, 데이터베이스 레코드를 객체로 다룰 수 있게 해 주며, CRUD 작업을 간단하게 처리할 수 있게 해 줍니다.

 

TypeORM은 다양한 데이터베이스 시스템과 호환되며, MySQL, PostgreSQL, SQLite, Microsoft SQL Server 등 다양한 데이터베이스를 지원합니다. 또한, NestJS와 함께 사용할 때 효율적인 의존성 주입 및 모듈 구성을 제공하여 백엔드 애플리케이션 개발을 간단하게 만들어줍니다.

 

 

TypeORM 주요 기능

TypeORM에 대한 주요 기능에 대해서 설명해 보겠습니다.

 

1. 엔티티(Entity) 및 리포지토리(Repository)

TypeORM은 엔티티 클래스를 통해 데이터베이스 테이블과의 매핑을 정의합니다. 엔티티 클래스의 속성은 데이터베이스의 칼럼과 매핑되며, 이를 통해 데이터베이스 레코드를 객체로 다룰 수 있습니다. 또한, 리포지토리를 통해 엔티티에 대한 CRUD 작업을 수행할 수 있습니다.

 

2. 마이그레이션(Migration)

TypeORM은 데이터베이스 스키마의 변경을 관리하기 위해 마이그레이션 기능을 제공합니다. 마이그레이션은 스키마 변경 내용을 버전 관리하고, 데이터베이스의 현재 상태와 버전을 일치시키는 역할을 수행합니다. 이를 통해 팀 작업 환경에서 스키마 변경을 관리하고 배포할 때 문제를 최소화할 수 있습니다.

 

3. 쿼리 빌더(Query Builder)

TypeORM은 SQL 쿼리를 직접 작성하지 않고도, 쿼리 빌더를 사용하여 데이터베이스 쿼리를 생성할 수 있습니다. 이는 타입 안전한 방식으로 쿼리를 작성할 수 있게 해 주며, 데이터베이스 종속성을 최소화하여 코드 유지보수성을 높여줍니다.

 

 

4. 트랜잭션(Transactions)

TypeORM은 트랜잭션을 지원하여 여러 쿼리를 하나의 트랜잭션으로 묶어 데이터 일관성을 유지할 수 있습니다. 이는 복잡한 작업을 수행할 때 중요한 기능으로, 안정적인 데이터 조작을 보장해 줍니다.

 

 

 

TypeORM - Amazing ORM for TypeScript and JavaScript (ES7, ES6, ES5). Supports MySQL, PostgreSQL, MariaDB, SQLite, MS SQL Server,

 

typeorm.io

 

 


데이터베이스 설치 - PostgreSQL

이번에 데이터베이스는 PostgreSQL로 설치하여 진행해 보겠습니다. 아래 절차대로 진행해 주면 됩니다.

 

1. Windows에서 PostgreSQL 설치하기

아래 링크에서  Windows x86-64를 선택하여 설치해주시면 됩니다.

 

Community DL Page

Note: EDB no longer provides Linux installers for PostgreSQL 11 and later versions, and users are encouraged to use the platform-native packages. Version 10.x and below will be supported until their end of life. For more information, please see this blog p

www.enterprisedb.com

 

postgreSQL 다운로드

 

2. Mac에서 PostgreSQL 설치하기

mac에서는 아래 링크에서 이미지에 나와있는데로 다운로드 진행하시면 됩니다.

 

Postgres.app – the easiest way to get started with PostgreSQL on the Mac

Postgres.app is a full featured PostgreSQL installation packaged as a standard Mac app.

postgresapp.com

 

mac postgres.app 다운로

 

3. pgAdmin 설치

PostgreSQL 데이터베이스를 GUI로 관리할수있는 툴을 설치합니다.

아래 링크에서 pgAdmin4  windows , mac OS 선택하여 다운로드 합니다.

 

Download

Download pgAdmin is a free software project released under the PostgreSQL licence. The software is available in source and binary format from the PostgreSQL mirror network. Because compiling from source requires technical knowledge, we recommend installing

www.pgadmin.org

 

pgAdmin

 

4.  PostgreSQL 실행

아래 이미지에서 Start 버튼을 눌러 postgreSQL을 실행합니다.

 

postgreSQL 실행

 

5.  pgAdmin에서 데이터베이스 생성

그런 다음 pgAdmin을 실행하여 Server에 Register에 Server를 클릭합니다.

pgAdmin - Register

 

General 탭에서 BoardProject이라고 데이터베이스 서버이름을 설정합니다.

pgAdmin - General

Connection 탭에서 아래 내용을 작성하고 Save 하여 데이터베이스를 생성합니다.

  • host name : localhost
  • port : 5432
  • maintenance database : postgres
  • Username : postgres
  • Password : postgres (테스트용이니 이렇게 적용)

pgAdmin - connection

 

생성하면 아래처럼 나오게 됩니다.

 

pgAdmin - database


NestJS에서 모듈 설치하기

Info

pg : 8.11.2 (PogreSQL 모듈)
typeorm : 0.3.17 (typeORM 모듈)
@nestjs/typeorm : 10.0.0 (NestJS에서 TypeORM을 사용할 수 있게 연동하는 모듈)

 


    
npm i pg typeorm @nestjs/typeorm --save

 

 

Tip

이번 포스팅에서는 PostgreSQL과 GUI툴 pgAdmin을 설치하고 nestJS 프로젝트에서 관련 모듈을 설치하는 거 까지 해봤습니다. 기본 개념과 환경설정을 위주로 해봤구요 다음 포스팅에서 TypeORM 설정하는 방법과 Board라는 테이블을 생성해 보고 다루는 방법에 대해서 설명해 볼까 합니다. 읽어주셔서 감사합니다.

 

반응형
저작자표시 비영리 변경금지 (새창열림)
잘못된 내용이 있으면 댓글 부탁드립니다. 감사합니다.
Stack_Shines
Stack_Shines
프론트엔드 백엔드 학습정리 및 정보공유 블로그입니다.
'IT/NestJS' 카테고리의 다른 글
  • [NestJS] @nest/config 사용하여 환경 변수 구성하자
  • [NestJS] NestJS와 TypeORM을 활용한 데이터베이스 연동 - 2
  • [NestJS] NestJS 설치부터 기본 개념 알아보자
Stack_Shines
느린 개발자
Stack_Shines
전체
오늘
어제
  • 분류 전체보기 102
    • 티스토리 10
    • IT 67
      • Library 3
      • JavaScript 3
      • TypeScript 3
      • Nuxt & vue 14
      • Nuxt3 6
      • React 4
      • NestJS 4
      • Express 9
      • CI CD 1
      • WebGl 4
      • docker 6
      • MAC 2
      • 디자인패턴 1
      • Error 4
      • 홈서버 3
    • 프로젝트 1
    • 오늘의 회고 2
    • 맛리뷰 7
    • 다이어트 5
    • 여행 1
    • 끄적끄적 일상 6
    • 생활 정보 3

인기 글

최근 글

hELLO · Designed By 정상우.
Stack_Shines
[NestJS] NestJS와 TypeORM을 활용한 데이터베이스 연동 - 1
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.