개념은 정리해놨는데 코드로 정리를 안해놓으니까 헷갈린다 😥
단방향 매핑이여도 테이블은 연관관계를 맺는다.
양방향은 조회 로직이 추가된 것 뿐이다.
양방향 매핑을 할 때 JPA에 주인이 아니라는 걸 알려주기 위해 mappedBy를 사용한다.
@Entity
public class Instagram {
@OneToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "PLACE_ID")
public Place place;
...
}
@Entity
public class Place {
@OneToOne(mappedBy = "place") // Place가 주인이 아니다!
public Instagram instagram;
...
}
@DisplayName("양방향 OneToOne에서 주인이 아닌 쪽에서 데이터를 등록할 수 없다.")
@Test
void test() {
// date setup
Instagram instagram = instagramRepository.save(new Instagram());
Place place = new Place();
// 주인이 아닌 쪽에 주인 등록
place.instagram = instagram;
// 저장
placeRepository.save(place);
List<Place> places = placeRepository.findAll();
assertThat(places.get(0).instagram).isNull(); // 저장되지 않음
}