(TypeORM) TypeORM - Embedded Entities

최건·2025년 5월 9일

참고 문서

Embedded Entities란?

  • 상속(inheritance) 대신 구성(composition)을 활용하여 코드 중복을 줄이는 강력한 방법
  • 여러 엔티티(User, Employee, Student 등)가 동일한 속성(firstName, lastName)을 반복적으로 갖고 있을 때, 그 중복을 없애기 위한 기능이다.

개념

개념설명
Embedded Entity독립된 테이블은 아니지만, 특정 컬럼들을 그룹화하여 다른 엔티티 안에 포함시킬 수 있는 클래스
목적반복되는 컬럼들을 재사용하여 코드 중복 제거
작동 방식클래스의 필드들을 실제 테이블의 컬럼으로 병합(Merge)

예시 구조

중복 구조:

@Column()
firstName: string;

@Column()
lastName: string;

위 코드가 User, Employee, Student에 중복되어 있음.

Embedded 구조:

export class Name {
    @Column()
    first: string;

    @Column()
    last: string;
}
@Column(() => Name)
name: Name;

실제 테이블 구조

-- User 테이블
id | nameFirst | nameLast | isActive
-- Employee 테이블
id | nameFirst | nameLast | salary
-- Student 테이블
id | nameFirst | nameLast | faculty
  • 즉, name: Name으로 객체를 묶었지만 실제 DB에는 nameFirst, nameLast처럼 평탄화된 컬럼으로 생됨

Embedded Entity의 장점

  • 코드 재사용성 향상
  • 테이블 구조는 평탄화되어 있어 SQL에서도 접근 쉬움
  • 중첩(embedded inside embedded)도 가능
profile
개발이 즐거운 백엔드 개발자

0개의 댓글