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를 가진다.