2022. 11. 20. 15:00ㆍBackend Development/NestJS
"ORM 없는 백엔드 애플리케이션은 마치 나침반 없는 항해와 같습니다."
방향을 잡기 힘들고, 작업이 더디게 느껴질 수 있습니다. ORM은 데이터베이스와의 소통을 훨씬 더 단순하고 명확하게 만들어주는 도구입니다. 이번 글에서는 ORM 중 하나인 TypeORM을 사용하여 효율적인 백엔드 애플리케이션을 구축하는 방법을 알아보겠습니다.
1. TypeORM 설정을 위한 라이브러리 설치
프로젝트에 TypeORM을 사용하기 위해 필요한 라이브러리를 설치합니다. 아래 명령어를 실행하세요:
npm i -s typeorm mysql2 @nestjs/typeorm
npm i -D typeorm-model-generator
설치된 라이브러리 설명
typeorm
: ORM 라이브러리로, 객체와 데이터베이스 테이블 간의 매핑을 지원합니다.mysql2
: MySQL 데이터베이스와 Node.js 간의 통신을 지원하는 라이브러리입니다.@nestjs/typeorm
: NestJS와 TypeORM을 쉽게 통합하도록 래핑된 모듈입니다.typeorm-model-generator
: 기존 데이터베이스 테이블에서 엔터티(Entity)를 자동 생성해주는 도구입니다. (참고: 이 라이브러리는 더 이상 업데이트되지 않으니 사용에 주의하세요.)
2. 데이터베이스 테이블에서 엔터티 생성
이미 만들어진 데이터베이스 테이블을 기반으로 TypeORM 엔터티를 생성하려면 typeorm-model-generator
를 사용합니다.
엔터티 생성 명령어
npx typeorm-model-generator -d {DB 이름} -u {DB 사용자} -p {포트 번호} -e {DB 엔진} -o {엔터티 저장 경로} --index true --noConfig true --cf pascal --ce pascal --cp camel --strictMode
주요 옵션 설명
-d
: 데이터베이스 이름.-u
: 데이터베이스 사용자 이름.-p
: 데이터베이스 포트 번호.-e
: 데이터베이스 엔진(MySQL, PostgreSQL 등).-o
: 생성된 엔터티 파일이 저장될 경로.
참고
각 옵션의 역할은 npx typeorm-model-generator --help
명령어를 통해 확인할 수 있습니다.
3. TypeORM 설정
엔터티를 생성한 후, NestJS의 AppModule
에서 TypeORM 설정을 진행합니다.
설정 코드
import * as Entity from '@/entities';
import { Module } from '@nestjs/common';
import { TypeOrmModule } from '@nestjs/typeorm';
@Module({
imports: [
TypeOrmModule.forRoot({
type: 'mysql', // 데이터베이스 종류
host: '127.0.0.1', // 호스트 주소
port: 3306, // 포트 번호
username: 'admin', // DB 사용자 이름
password: '', // 비밀번호
database: 'dbs', // 데이터베이스 이름
entities: Object.values(Entity), // 엔터티 파일 목록
synchronize: false, // 스키마 동기화 (운영 환경에서는 false 권장)
logging: true, // 쿼리 로그 활성화
}),
],
controllers: [],
providers: [],
})
export class AppModule {}
주요 설정 옵션
type
: 데이터베이스 종류를 설정합니다 (예: MySQL).entities
: 엔터티 파일의 경로 또는 객체 배열.synchronize
: 데이터베이스 스키마를 자동 동기화합니다. 운영 환경에서는false
로 설정하는 것이 좋습니다.logging
: 실행된 쿼리를 콘솔에 출력합니다. 디버깅 시 유용합니다.
4. 애플리케이션 실행 및 확인
설정을 완료한 후, 애플리케이션을 실행하여 TypeORM이 정상적으로 초기화되었는지 확인합니다.
실행 명령어
npm run start
실행 시 로그
다음과 같은 로그가 출력되면 성공입니다! 🎉
TypeOrmModule dependencies initialized
SELECT VERSION() AS `version`
5. 추가 팁: typeorm-model-generator
대체 방법
typeorm-model-generator
는 업데이트가 중단된 상태이므로, 아래와 같은 대체 방법을 고려할 수 있습니다:
- 엔터티를 직접 작성: 데이터베이스 테이블의 구조를 참고하여 TypeORM 엔터티를 수동으로 작성.
- TypeORM CLI 사용:
typeorm migration:generate
명령어를 활용하여 엔터티를 생성하거나 관리.
마무리
이 글에서는 NestJS와 TypeORM을 사용해 백엔드 애플리케이션을 설정하는 방법을 다뤘습니다. TypeORM을 활용하면 데이터베이스와의 연동을 객체 지향적으로 처리할 수 있어 개발 생산성과 유지보수성을 크게 향상시킬 수 있습니다.
추가적인 질문이나 의견이 있다면 댓글로 남겨주세요! 😊
'Backend Development > NestJS' 카테고리의 다른 글
NestJS 에서 class-validator 를 활용한 데이터 검증 방법 (0) | 2023.06.26 |
---|---|
NestJS 로 간단한 회원가입 기능 구현하기 (0) | 2023.06.25 |
NestJS에서 @typescript-eslint/no-unused-vars 오류 해결 방법 (0) | 2022.12.15 |
NestJS Interceptor로 효율적인 로깅 시스템 구축하기 (2) | 2022.12.14 |