작성
·
234
0
안녕하세요. <실전 예제 3 - 다양한 연관관계 매핑>에서 질문이 있습니다.
1) Delivery 클래스에는 다음과 같이 기술되어 있는데요.
@Id
@GeneratedValue
private Long id;
Order 클래스에서는 다음과 같이 기술되어 있습니다.
@OneToOne
@JoinColumn(name = "DELIVERY_ID")
private Delivery delivery;
DELIVERY_ID라고 이름 지어진 변수가 없는데( @Column(name = "DELIVERY_ID")가 기술되어 있지 않습니다 ), 어떻게 @JoinColumn(name = "DELIVERY_ID") 이 가능한 것인가요?
2) Category 클래스에서 id에는 다음처럼만 기술되어 있습니다.
@Id
@GeneratedValue
private Long id;
즉 @Column(name = "PATENT_ID")가 없지요.
그런데 어떻게
@ManyToOne
@JoinColumn(name = "PARENT_ID")
private Category parent;
에서 @JoinColumn(name = "PARENT_ID")이 가능할 수 있는 것인가요?
기존에 올라와 있는 질문을 검색해서 https://www.inflearn.com/questions/113969 을 읽어보았습니다.
@JoinColumn의 name은 FK 이름이라고 하셨는데요.
하지만 @Column(name = "PATENT_ID")가 없으니 PATENT_ID라는 FK가 생성 자체가 안 되는 것 아닌가요?
읽어주셔서 감사합니다.
답변 1
1
안녕하세요. with_all님, 공식 서포터즈 David입니다.
.
1. JPA에서 칼럼명을 생성하는 관례가 있습니다. Delivery클래스에 id라는 이름을 가지는 멤버변수가 있다면 DELIVERY_ID로 칼럼명을 생성합니다.
2. 이것 또한 관례로 생성되는 것과 동일합니다. parent의 타입이 Category입니다. Category 테이블을 생성할 때 (FK로 쓰여질) parent에 대한 칼럼을 생성하게 됩니다. 해당 칼럼명은 다음과 같이 만들어집니다. 변수명(PARENT)+PK의 변수명(ID) => PARENT_ID
.
감사합니다.
답변 감사드립니다.