@OneToMany를 사용하면 mappedBy속성을 사용하게 된다. 왜 필요할까?

 

양방향이라는 말은 서로 다른 단방향 연관관계 2개를 애플리케이션 로직으로 잘 묶어서 양방향인 것처럼 보이게 할 뿐이다. 데이터 베이스 테이블은 외래키 하나로 양쪽이 서로 조인할 수있다.

 

테이블은 외래 키 하나로 두 테이블의 연관관계를 관리한다. 엔티티를 단방향으로 매핑하면 참조를 하나만 사용하므로 이 참조로 외래키를 관리하면 된다.

두 객체 연관관계 중 하나를 정해서 테이블의 외래키를 관리해야 하는데 이것을 연관관계의 주인이라고 한다.

 

 

연관관계의 주인만이 데이터 베이스 연관관계와 매핑되고 외래키를 관리할 수 있다. 반면에 주인이 아닌 쪽은 읽기만 할 수 있다.

 

주인은 mappedBy 속성을 사용하지 않는다.

주인이 아니면 mappedBy 속성을 사용해서 속성의 값으로 연관관계의 주인을 지정해야한다.

 

연관관계 주인을 정한다는 것은 사실 외래키 관리자를 선택하는 것이다.

+ Recent posts