설계한 스키마와 불러올 entity에 따라 @OneToOne
매핑이 필요할 수 있다.
나에게 다음과 같은 상황이 주어졌다.
서비스에서 restaurant_menu
와 restaurant_property
를 한꺼번에 불러와야 하는 상황이다. 각각 따로 쿼리를 날리면 낭비니 같이 쿼리를 날릴 수 있도록 하자.
restaurant_menu
는 이 관계에서 주인이 될 예정이다.
@OneToMany
나 @ManyToOne
처럼 단방향, 양방향 둘 중 하나를 선택해 매핑시킬 수 있다.
나의 상황에선 단방향이 설계상 맞으므로 단방향으로 한다.
연관 시킬 entity 위에 @OneToOne
을 써준다. 그럼 서버 시작시 hibernate가 해당 entity를 참조하는 FK column을 생성시켜줄 것이다.
@JoinColumn(name = )
은 해당 FK column의 이름을 정해준다. 만약 이 어노테이션을 쓰지 않으면 기본 값의 이름으로 설정해준다.
참조 당하는 entity에는 아무 것도 쓰지 않아도 된다.
이렇게 작성하고 나면 이제 restaurant_menu
FK인 restaurant_code
가 restaurant_property
의 PK를 참조할 것이다.
이렇게 FK를 따로 추가해 생성한 테이블은 다음과 같다.
그런데 만약 따로 FK를 생성하고 싶지 않고 PK를 FK로 사용하고 싶다면, @PrimaryKeyJoinColumn
어노테이션을 추가한다.
역시 참조 당하는 entity에는 아무 것도 쓰지 않아도 된다.
이렇게 PK를 FK로 사용하여 생성한 테이블은 다음과 같다.