임베디드 컬럼을 사용하여 중복을 줄일 수 있다. 자신의 컬럼을 가진 클래스를 받아들이는 컬럼이다. 그리고 이러한 컬럼을 현재 엔티티 테이블에 합친다.
User, Employee 그리고 Student 엔티티가 있다고 해보자. 일반적인 컬럼이 존재한다. first name 과 last name
import { Entity, PrimaryGeneratedColumn, Column } from "typeorm"
@Entity()
export class User {
@PrimaryGeneratedColumn()
id: string
@Column()
firstName: string
@Column()
lastName: string
@Column()
isActive: boolean
}
import { Entity, PrimaryGeneratedColumn, Column } from "typeorm"
@Entity()
export class Employee {
@PrimaryGeneratedColumn()
id: string
@Column()
firstName: string
@Column()
lastName: string
@Column()
salary: string
}
중복 칼럼을 가지고 클래스를 만들어서 중복을 줄이는 것이다.
import { Column } from "typeorm"
export class Name {
@Column()
first: string
@Column()
last: string
}
이후에 이러한 컬럼을 엔티티에 연결한다.
import { Entity, PrimaryGeneratedColumn, Column } from "typeorm"
import { Name } from "./Name"
@Entity()
export class User {
@PrimaryGeneratedColumn()
id: string
@Column(() => Name)
name: Name
@Column()
isActive: boolean
}
import { Entity, PrimaryGeneratedColumn, Column } from "typeorm"
import { Name } from "./Name"
@Entity()
export class Employee {
@PrimaryGeneratedColumn()
id: string
@Column(() => Name)
name: Name
@Column()
salary: number
}
import { Entity, PrimaryGeneratedColumn, Column } from "typeorm"
import { Name } from "./Name"
@Entity()
export class Student {
@PrimaryGeneratedColumn()
id: string
@Column(() => Name)
name: Name
@Column()
faculty: string
}
Name Entity로 정의된 칼럼은 user, employee, student에 합쳐진다.
다양한 칼럼을 선언하여 처리할 수 있으며, 임베디드 클래스에 임베디드 클래스를 충첩해서 사용할 수 있다.
'프로그래밍 > TypeORM' 카테고리의 다른 글
[TypeORM] Active Record vs Data Mapper (0) | 2023.08.31 |
---|---|
[TypeORM] Entity Inheritance (0) | 2023.08.31 |
[TypeORM] Eager and Lazy Relations (0) | 2023.08.31 |
[TypeORM] What is EntityManager and Repository (0) | 2023.08.31 |
[TypeORM] Working with DataSource (0) | 2023.08.30 |
댓글