@Entity
public class Answer {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
@Column(columnDefinition = "TEXT")
private String content;
private LocalDateTime createDate;
@ManyToOne
private Question question;
}
@ManyToOne
private Department department;
@ManyToOne
@JoinColumn(name = "department_id")
private Department department;
: 둘다 외래 키 컬럼이 생성된다.
@ManyToOne 만 사용한 경우,
외래 키 컬럼의 이름을 기본 규칙에 따라 생성한다.
일반적으로 필드명(department)과 'Department' 엔티티의 기본 키(primary key)필드명을 조합하여 외래 키 컬럼의 이름을 설정한다.
@ManyToOne과 @JoinColumn명을 함께 사용한 경우,
외래 키 이름을 명시적으로(직접) 지정할 수 있다. 즉 위의 예시에서는 "department_id"라는 이름을 가진 외래 키 컬럼이 생성된다. 이렇게 하면 JPA는 명시적으로 지정한 컬럼 이름을 사용하게 된다.
따라서
'Department' 엔티티의 기본 키(primary key)필드명이 "id"인 경우, 위의 두 가지 방식으로 정의한 'department' 필드는 동일한 외래 키 이름을 생성한다.
@ManyToOne 만 사용한 경우 와 @ManyToOne과 @JoinColumn명을 함께 사용한 경우 의 차이는 생성되는 외래 키 컬럼의 이름을 명시적(직접)으로 설정해주느냐 아니냐의 차이다.