[JPA] @JoinColumn에 대하여

김용현·2023년 12월 19일
0

JPA

목록 보기
4/12
post-thumbnail

김영한 님의 강의를 들으며 복습하던 도중 궁금한 점이 생겼다.

다음을 보면 둘 다 연관관계를 맺는 부분인데, 위에는 @JoinColumn이 사용되었고, 밑에는 사용되지 않았다.

그러나 실행 결과를 보면

둘 다 잘 생성된다.

그렇다면 @JoinColumn을 생략해도 가능하다는 것인데, 그럼 @JoinColumn은 왜 사용하는 것일까?

사용 이유

  • 기본적으로 외래키를 저장할 column name을 지정할 수 있다.

혼동하면 안되는 것은 여기서 지정한 name의 값은 현재 테이블(@JoinColumn을 적용 하는 필드를 가진 테이블)에서 대상 테이블의 외래 키를 가질 컬럼 이름을 지정하는 것 이다.
ex) 위 예시에서는 Orders 테이블에 MEMBER_ID 컬럼 이름으로 Member 외래 키를 저장한다.

  • referencedColumnName 값을 이용해 외래 키로 참조할 대상 테이블의 컬럼을 설정할 수 있다.

이 옵션 값이 대상 테이블에서 어떤 컬럼을 가져와서 나의 테이블에 외래 키로 저장할 지를 지정하는 값이다. 예시에서는 생략되어 있는데 생략 시 대상 테이블의 pk값을 가져온다. 이는 이대로 사용하는 것이 좋다.

  • insertable, updatable 등의 옵션을 사용할 수 있다.

또한 ManyToOne만 생략해도 기대한 대로 작동하지 OneToMany 관계에서는 생략해서는 안된다고 한다.

📚 참고자료

https://hyeon9mak.github.io/omit-join-column-when-using-many-to-one/

profile
평생 여행 다니는게 꿈 💭 👊 😁 🏋️‍♀️ 🦦 🔥

0개의 댓글