💡 연관관계의 주인
- 외래키를 만들어서 값을 갖고 있는 테이블이 주인
1. 단방향 연관관계
- 실제로 연관관계의 주인인 테이블에만 연관관계를 설정(@ManyToOne)
2. 양방향 연관관계 매핑
- 두 객체가 서로 참조해야 하는 상황에서 정의하는 연관관계 매핑 방식
- 데이터베이스에서 테이블 간의 관계는 단방향 매핑이 존재한다.
- 양방향 연관관계 매핑을 할 때는 반드시 한쪽의 객체에 mappedBy 옵션을 설정해야 한다.
- 객체입장에서는 참조 관계가 양방향이 되었으나, 데이터베이스 입장에서는 자식 테이블의 외래키만으로 관계설정이 충분하기 때문에, 추가적인 설정이 필요하다.
- mappedBy 옵션은 자신이 이 연관관계의 주인이 아님을 설정하는 것이다.
- mappedBy 옵션에서는 반대쪽에 자신이 매핑되어 있는 필드명을 적으면 된다.
연관관계의 주인은 1:N의 경우, N이 연관관계의 주인이다.
즉, 외래키를 가지고 있는 쪽이 연관관계의 주인이다.
@OneToMany(mappedBy = "post", cascade = CascadeType.REMOVE)
private Set<PostVoter> postVoters;