객체는 참조로 연관관계를 맺는다.
테이블은 외래 키로 연관관계를 맺는다.
둘은 비슷해보이지만, 연관된 데이터를 조회할 때 객체는 참조를 사용하지만 테이블은 조인을 사용한다.
테이블 연관관계
@JoinColumn
@ManyToOne
엔티티를 양방향 연관관계로 설정하면 객체의 참조는 둘인데 외래키는 하나다. 따라서 둘 사이에 차이가 발생한다.
이런 차이로 인해 JPA에서는 두 객체 연관관계 중 하나를 정해서 테이블의 외래키를 관리해야 하는데 이것을 연관관계 주인이라 한다.
데이터베이스 테이블의 다대일, 일대다 관계에서는 항상 다 쪽이 외래 키를 가진다. 다 쪽인 @ManyToOne은 항상 연관관계 주인이 되므로 mappedBy를 설정할 수 없다.
연관관계 주인은 외래키의 위치와 관련해서 정해야지 비즈니스 중요도로 접근하면 안된다.