Queen Julia 2023. 11. 7. 14:01

NestJS에서 Entity 파일은 데이터베이스 테이블과 관련된 모델 또는 스키마를 정의하는 TypeScript 클래스

 

Entity 클래스는 주로 TypeORM과 같은 ORM (Object-Relational Mapping) 라이브러리와 함께 사용되며,

데이터베이스와 애플리케이션 코드 간의 상호 작용을 단순화하고

데이터베이스 테이블과 데이터를 JavaScript 또는 TypeScript 객체로 매핑합니다.

 

Entity 클래스는 다음과 같은 역할을 합니다:

  1. 데이터 모델 정의: Entity 클래스는 데이터베이스 테이블의 구조를 정의하며, 각 속성 (필드)을 클래스 속성으로 나타냅니다. 이 클래스는 데이터베이스 테이블의 각 레코드와 일치하는 데이터를 표현합니다.
  2. 데이터베이스 테이블 매핑: Entity 클래스는 ORM 라이브러리를 사용하여 데이터베이스 테이블과 매핑됩니다. 각 클래스 속성은 데이터베이스 테이블의 열과 일치하며, 클래스는 데이터베이스 레코드와 일치합니다.
  3. 데이터베이스 CRUD 작업: Entity 클래스는 데이터베이스에서 데이터를 생성, 읽기, 업데이트 및 삭제(CRUD)하는 데 사용됩니다. ORM을 사용하면 JavaScript 또는 TypeScript 코드를 통해 데이터베이스 작업을 수행할 수 있습니다.

Entity 클래스를 정의하면 데이터베이스 스키마를 TypeScript 클래스로 표현하고, TypeORM과 같은 ORM 라이브러리를 사용하여 데이터베이스 테이블을 생성하거나 마이그레이션을 수행할 수 있습니다. 또한 이러한 클래스를 사용하여 데이터를 검색하고 조작하며, 간단한 CRUD 작업을 수행할 수 있습니다.

 

 

예를 들어, MySQL 데이터베이스의 "users" 테이블에 대한 Entity 클래스는 다음과 같이 정의될 수 있습니다

 

import { Entity, PrimaryGeneratedColumn, Column } from 'typeorm';

@Entity()
export class User {
  @PrimaryGeneratedColumn()
  id: number;

  @Column()
  username: string;

  @Column()
  email: string;
}

 

 

 

User 클래스는 TypeORM을 사용하여 "users" 테이블과 매핑되며, 각 클래스 속성은 데이터베이스 테이블의 열과 일치

 


MySQL 데이터베이스의 "users" 테이블에 대한 Entity 클래스를 타입스크립트 반영해서 알려줘

 

 

 

import { Entity, PrimaryGeneratedColumn, Column } from 'typeorm';

@Entity('users') // 'users' 테이블과 매핑
export class User {
  @PrimaryGeneratedColumn()
  id: number;

  @Column()
  username: string;

  @Column()
  email: string;

  @Column({ default: true }) // 기본값이 true인 'active' 열
  active: boolean;

  @Column({ name: 'registration_date', type: 'timestamp', default: () => 'CURRENT_TIMESTAMP' })
  registrationDate: Date;
}

 

 

 

이 코드에서 주요 포인트는 다음과 같습니다:

  • @Entity('users'): 이 데코레이터는 "users" 테이블과 이 Entity 클래스를 매핑합니다. "users"는 테이블 이름을 나타냅니다.
  • @PrimaryGeneratedColumn(): id 속성을 데이터베이스의 primary key로 설정하고 자동으로 증가하는 열로 정의합니다.
  • @Column(): username, email 및 active 속성을 데이터베이스 열로 정의합니다. default 속성을 사용하여 기본값을 설정하거나 name 속성을 사용하여 데이터베이스 열 이름을 지정할 수 있습니다.
  • @Column({ type: 'timestamp', default: () => 'CURRENT_TIMESTAMP' }): registrationDate 속성을 타임스탬프 형식의 데이터베이스 열로 정의하고, 기본값을 현재 시간으로 설정합니다.

이제 위의 코드를 사용하여 "users" 테이블과 관련된 TypeORM Entity 클래스를 생성하고, 데이터베이스와 상호 작용하는 NestJS 애플리케이션을 구축할 수 있습니다. Entity 클래스를 사용하여 데이터베이스의 CRUD 작업을 수행할 수 있습니다.