sping boot @OneToOne 단방향 매핑 적용

lsy·2022년 12월 17일
0

사용하는 이유

설계한 스키마와 불러올 entity에 따라 @OneToOne 매핑이 필요할 수 있다.

나에게 다음과 같은 상황이 주어졌다.

서비스에서 restaurant_menurestaurant_property를 한꺼번에 불러와야 하는 상황이다. 각각 따로 쿼리를 날리면 낭비니 같이 쿼리를 날릴 수 있도록 하자.

restaurant_menu는 이 관계에서 주인이 될 예정이다.

단방향

@OneToMany@ManyToOne처럼 단방향, 양방향 둘 중 하나를 선택해 매핑시킬 수 있다.

나의 상황에선 단방향이 설계상 맞으므로 단방향으로 한다.

연관 시킬 entity 위에 @OneToOne을 써준다. 그럼 서버 시작시 hibernate가 해당 entity를 참조하는 FK column을 생성시켜줄 것이다.

@JoinColumn(name = )은 해당 FK column의 이름을 정해준다. 만약 이 어노테이션을 쓰지 않으면 기본 값의 이름으로 설정해준다.

참조 당하는 entity에는 아무 것도 쓰지 않아도 된다.

이렇게 작성하고 나면 이제 restaurant_menu FK인 restaurant_coderestaurant_property의 PK를 참조할 것이다.

이렇게 FK를 따로 추가해 생성한 테이블은 다음과 같다.

그런데 만약 따로 FK를 생성하고 싶지 않고 PK를 FK로 사용하고 싶다면, @PrimaryKeyJoinColumn 어노테이션을 추가한다.

역시 참조 당하는 entity에는 아무 것도 쓰지 않아도 된다.

이렇게 PK를 FK로 사용하여 생성한 테이블은 다음과 같다.

profile
server를 공부하고 있습니다.

0개의 댓글