DB

TypeORM

kimddakki 2022. 8. 13. 20:14
Entity란

 - 데이터베이스에 테이블에 매핑되는 클래스이다..

 - 별도의 클레스에 @Entity()로 선언하여 매핑 내용을 정의한다.

 

 - 각 Entity는 DB테이블의 열과 그 관계에 대해 정의한다.

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

@Entity()
export class User {

    @PrimaryGeneratedColumn()
    id: number;

    @Column()
    firstName: string;

    @Column()
    lastName: string;

    @Column()
    isActive: boolean;

}
Entity Clumns

 - Primary Column

 - 각 Entity는 적어도 하나의 Primary Column을 보유해야 한다.

 

1. primary column()

 - 모든 유형의 값을 취급하는 Column을 생성한다.

 - 컬럼 속성을 정의하지 않으면 속성값을 유추하여 자동으로 지정된다.

import {Entity, PrimaryColumn} from "typeorm";

@Entity()
export class User {

    @PrimaryColumn()
    id: number;
}

2. PrimaryGeneratedColumn()

 - 자동 증가값이 적용되는 컬럼이다. 시퀀스로 활용된다.

import {Entity, PrimaryGeneratedColumn} from "typeorm";

@Entity()
export class User {

    @PrimaryGeneratedColumn()
    id: number;
}

2. PrimaryGeneratedColumn(인자값)

 - 인자값으로 작성한 텍스트가 열 추가시 자동으로 생성된다.

import {Entity, PrimaryGeneratedColumn} from "typeorm";

@Entity()
export class User {

    @PrimaryGeneratedColumn("uuid")
    id: string;
}
Column types

1. @Column(자료형)

 - 테이블의 컬럼 타입은 @Column(자료형)으로 지정할 수 있다.

@Column("int")
// or
@Column({ type: "int" })

옵션값을 부여할 수 있다.

@Column("varchar", { length: 200 })
// or
@Column({ type: "int", width: 200 })
// example
@Column({ default: false })
  noDelivery: boolean;

2. @Generated(인자)

 - 이 때 인자는 uuid / increament와 같은 값이 들어간다.

 - uuid는 고유한 값을 다루기 위한 컬럼의 속성으로 활용된다고 이해하면 된다.

@Entity()
export class User {

    @PrimaryColumn()
    id: number;

    @Column()
    @Generated("uuid")
    uuid: string;
}
Column Options

 - type을 포함한 컬럼의 옵션들을 객체로 다루어 생성할 수 있다.

@Column({
    type: "varchar",
    length: 150,
    unique: true,
    // ...
})
name: string;
Entity의 상속

 - 엔티티의 상속을 활용하여 코드의 중복을 줄일 수 있다.

export abstract class Content {

    @PrimaryGeneratedColumn()
    id: number;

    @Column()
    title: string;

    @Column()
    description: string;
}

@Entity()
export class Photo extends Content {

    @Column()
    size: string;
}

 

 

Entity

데이터베이스 테이블에 매핑되는 클래스이다. 별도의 클래스에 @Entity() 로 선언하여 매핑 내용을 정의한다. 각 Entity는 db테이블의 열과 그 관계에 대해 정의한다.위의 Entity파일은 db 아래 테이블

velog.io