Database/TypeORM

Relations 정리 One-to-One, @JoinColumn()

wam 2024. 8. 2. 20:41

 

@One-to-One

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

@Entity()
export class Profile {
    @PrimaryGeneratedColumn()
    id: number

    @Column()
    gender: string

    @Column()
    photo: string
}
import {
    Entity,
    PrimaryGeneratedColumn,
    Column,
    OneToOne,
    JoinColumn,
} from "typeorm"
import { Profile } from "./Profile"

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

    @Column()
    name: string

    @OneToOne(() => Profile)
    @JoinColumn()  **// 이 어노테이션은 'profile' 필드에 외래 키를 지정**
    profile: Profile
}
  • 두 엔티티 간의 일대일(1:1) 관계를 정의하는 데 사용
  • 즉, 하나의 엔티티가 다른 하나의 엔티티와만 관계를 맺는 경우이다.
  • 예를 들어, 사용자(User)가 하나의 프로필(Profile)을 갖고, 각 프로필은 하나의 사용자에만 속하는 경우이다.

 

 

@JoinColumn

  • 외래 키 열(column)을 명시적으로 정의하는 데 사용된다.
  • 관계의 주인(Owner) 쪽에서 사용되며, 외래 키가 어떤 열에 저장될지를 지정한다.
  • @JoinColumn 설정한 테이블에는 "relation ID"와 대상 엔티티 테이블에 대한 외부 키가 포함된다.

 

 

 

댓글수0