@JoinColum(JPA 연관관계별 사용)

김현정·2025년 4월 1일
0

@JoinColum란?

  • JPA에서 외래 키(Foreign Key)를 지정할 때 사용하는 어노테이션
  • Entity 연관관계 또는 Element Collection을 연결하기 위한 Column을 지정함
  • JoinColumn이 사용되는 용도는 주로, Entity의 연관관계에서 외래 키를 매핑하기 위해 사용됨.
  • @ManyToOne이나 @OneToOne 관계에서 연관된 엔티티의 외래 키를 어떤 컬럼으로 매핑할지 지정할 때 사용해
  • @JoinColumn(name = "컬럼명") 형태로 사용하며, 이 컬럼이 데이터베이스에서 외래 키 역할을 하게 됨.

@JoinColum의 속성 : name

name : 매핑할 외래 키 이름 지정

name 속성은 매핑할 외래 키의 이름을 지정하는 속성이다.

참조하는 Entity가 존재할 경우

@JoinColumn으로 FK를 매핑하는 필드의 이름과 해당 필드의 타입(대상 Entity)의 PK로 FK 이름이 지정된다

@JoinColumn을 사용하는 FK 필드의 이름을 대상 Entity(대상 Table)의 이름으로 설정
ex) private Member member;
------------------------------------------------------------------------- 
@JoinColumn을 사용할 때 name 속성으로 대상 Entity(대상 Table)의 이름 + PK로 하드하게 지정
ex)
@ManyToOne
@JoinColumn(name = "member_id")
private Member member;

첫 번째 방식도 가능은 하지만 두 번째 방식이 훨씬 안정적임.

연관관계

FK의 Column이 발견되는 테이블은 JPA 연관관계(context)에 따라 다르다.

@OneToOne : @JoinColumn을 사용하는 Entity가 연관관계의 주인, 즉 FK를 가진다.

@ManyToOne : @JoinColumn을 사용하는 Entity가 연관관계의 주인, 즉 FK를 가진다.

@OneToMany : @JoinColumn을 사용하는 Entity의 반대 Entity가 연관관계의 주인, 즉 FK를 가진다.

@ManyToMany : @JoinColumn을 사용하는 Join Table(Entity)가 연관관계의 주인, 즉 FK를 가진다.

0개의 댓글