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