“ 당신은 소프트웨어 품질을 추구할 수도 있고, 포인터 연산을 할 수도 있다. 그러나 두 개를 동시에 할 수는 없다. ”
이번 포스팅에서는 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은 트랜잭션을 지원하여 여러 쿼리를 하나의 트랜잭션으로 묶어 데이터 일관성을 유지할 수 있습니다. 이는 복잡한 작업을 수행할 때 중요한 기능으로, 안정적인 데이터 조작을 보장해 줍니다.
데이터베이스 설치 - PostgreSQL
이번에 데이터베이스는 PostgreSQL로 설치하여 진행해 보겠습니다. 아래 절차대로 진행해 주면 됩니다.
1. Windows에서 PostgreSQL 설치하기
아래 링크에서 Windows x86-64를 선택하여 설치해주시면 됩니다.
2. Mac에서 PostgreSQL 설치하기
mac에서는 아래 링크에서 이미지에 나와있는데로 다운로드 진행하시면 됩니다.
3. pgAdmin 설치
PostgreSQL 데이터베이스를 GUI로 관리할수있는 툴을 설치합니다.
아래 링크에서 pgAdmin4 windows , mac OS 선택하여 다운로드 합니다.
4. PostgreSQL 실행
아래 이미지에서 Start 버튼을 눌러 postgreSQL을 실행합니다.
5. pgAdmin에서 데이터베이스 생성
그런 다음 pgAdmin을 실행하여 Server에 Register에 Server를 클릭합니다.
General 탭에서 BoardProject이라고 데이터베이스 서버이름을 설정합니다.
Connection 탭에서 아래 내용을 작성하고 Save 하여 데이터베이스를 생성합니다.
- host name : localhost
- port : 5432
- maintenance database : postgres
- Username : postgres
- Password : postgres (테스트용이니 이렇게 적용)
생성하면 아래처럼 나오게 됩니다.
NestJS에서 모듈 설치하기
pg : 8.11.2 (PogreSQL 모듈)
typeorm : 0.3.17 (typeORM 모듈)
@nestjs/typeorm : 10.0.0 (NestJS에서 TypeORM을 사용할 수 있게 연동하는 모듈)
npm i pg typeorm @nestjs/typeorm --save
이번 포스팅에서는 PostgreSQL과 GUI툴 pgAdmin을 설치하고 nestJS 프로젝트에서 관련 모듈을 설치하는 거 까지 해봤습니다. 기본 개념과 환경설정을 위주로 해봤구요 다음 포스팅에서 TypeORM 설정하는 방법과 Board라는 테이블을 생성해 보고 다루는 방법에 대해서 설명해 볼까 합니다. 읽어주셔서 감사합니다.