songin.dev님의 블로그

[기록하는 습관] TypeORM & Entity 본문

TIL(Today I Learned)

[기록하는 습관] TypeORM & Entity

songin.dev 2023. 3. 11. 14:52
728x90

목적 : 학습내용 정리

TypeORM이란?

TypeORM은 TypeScript로 작성된 ORM(Object-Relational Mapping) 라이브러리로, Node.js, Browser, React Native 등 다양한 플랫폼에서 사용할 수 있다.

TypeORM 특징

  • TypeScript 지원: TypeORM은 TypeScript를 기본 언어로 사용하기 때문에, 타입 안정성과 가독성을 높일 수 있습니다.
  • 다양한 데이터베이스 지원: TypeORM은 MySQL, PostgreSQL, SQLite, MSSQL, Oracle 등 다양한 데이터베이스를 지원합니다.
  • ORM 기능 제공: TypeORM은 객체와 데이터베이스 간의 매핑을 쉽게 할 수 있도록 ORM 기능을 제공합니다. 이를 통해 객체를 데이터베이스에 저장하거나, 데이터베이스에서 객체를 가져오는 등의 작업을 쉽게 할 수 있습니다.
  • 데이터 마이그레이션: TypeORM은 데이터베이스 스키마를 관리하는 도구인 마이그레이션을 제공합니다. 이를 통해 데이터베이스 스키마를 버전 관리하거나, 데이터베이스 스키마를 업데이트하는 작업을 쉽게 할 수 있습니다.
  • 관계형 데이터베이스 지원: TypeORM은 관계형 데이터베이스를 다루는 데 필요한 다양한 기능을 제공합니다. 이를 통해 데이터베이스의 관계를 쉽게 설정하고, 관련된 데이터를 가져오는 작업을 쉽게 할 수 있습니다.
  • Active Record 및 Data Mapper 패턴 지원: TypeORM은 Active Record 및 Data Mapper 패턴을 지원합니다. 이를 통해 객체 지향 프로그래밍을 할 때, 데이터베이스와의 상호작용을 쉽게 할 수 있습니다

Entity란?

TypeORM에서 Entity는 객체(Object)와 데이터베이스의 테이블(Table)을 매핑하는 클래스(Class)입니다. Entity는 데이터베이스 테이블의 스키마를 정의하는 역할을 합니다.

Entity 클래스는 @Entity 데코레이터를 사용하여 정의합니다. 이 데코레이터는 데이터베이스에서 해당 클래스를 어떤 테이블로 매핑할 것인지 지정하며, 해당 클래스의 속성들은 테이블의 컬럼(Column)으로 매핑됩니다.

예를 들어, User Entity 클래스를 만든다면, 이 클래스는 데이터베이스의 user 테이블과 매핑될 수 있습니다. User 클래스의 속성(예: 이름, 이메일, 비밀번호 등)은 user 테이블의 컬럼으로 매핑됩니다. 이렇게 Entity 클래스를 정의하면, TypeORM은 해당 클래스와 데이터베이스 간의 매핑을 관리하며, CRUD(Create, Read, Update, Delete) 작업 등을 쉽게 수행할 수 있게 됩니다.

Entity 클래스는 TypeORM에서 제공하는 다양한 데코레이터를 사용하여 관계형 데이터베이스의 다양한 기능을 지원할 수 있습니다. 예를 들어, @Column 데코레이터를 사용하여 컬럼의 데이터 타입, 길이, 기본값 등을 설정할 수 있으며, @OneToMany, @ManyToOne 등의 데코레이터를 사용하여 관계형 데이터베이스의 관계를 설정할 수 있습니다.

 

User Entity 예시

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

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

  @Column({ length: 50 })
  name: string;

  @Column({ length: 100 })
  email: string;

  @Column()
  password: string;
}

User 클래스는 @Entity 데코레이터로 테이블 매핑을 설정하고, @PrimaryGeneratedColumn 데코레이터로 id 컬럼을 설정하였습니다. name, email, password 속성은 각각 @Column 데코레이터로 컬럼 매핑을 설정하였습니다. 이렇게 Entity 클래스를 정의하면, TypeORM을 사용하여 User 테이블과 관련된 CRUD 작업 등을 쉽게 수행할 수 있습니다.

 

위의 글은 ChatGPT를 참고하여 작성한 글입니다.
반응형
Comments