One-to-one
은 다음과 같은 관계를 말한다.User
와 Profile
엔티티 예시import { Entity, PrimaryGeneratedColumn, Coloumn } 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;
}
@OneToOne
을 User
엔티티의 profile
프로퍼티에 추가하고 대상 관계 타입을 Profile
로 지정하였다.@JoinColumn
을 추가하였다.@JoinColumn
은 one-to-one 관계의 엔티티 중에서 반드시 한 쪽에만 설정해야 한다.@JoinColumn
을 설정한 쪽의 테이블에는 “관계 id”와 대상 엔티티 테이블에 대한 FK(외래키)가 포함된다. user
테이블에 profile
테이블의 PK(기본키)가 FK(외래키)로 추가되었다.User
엔티티의 profile
프로퍼티에 @JoinColumn
을 추가하는 이유에 대해 생각해 봤는데, 다음과 같은 이유라고 볼 수 있을 것 같다.