다양한 연관관계 매핑
엔티티의 연관관계를 매핑할 때는 3가지를 고려
다중성
단방향, 양방향
연관관계의 주인
⇒ 풀어서 보면 두 엔티티가 일대일인지 일대다인지 다중성을 먼저 고려해야 하고, 두 엔티티가 한쪽만 참조하는 단방향인지, 서로 참조하는 양방향 관계인지 확인해봐야한다. 그리고 마지막으로 양방향 관계라면 연관관계의 주인을 정해줘야한다.
다중성
다대일(@ManyToOne)
일대다(@OneToMany)
일대일(@OneToOne)
다대다(@ManyToMany)
이렇게 구성되어있으며, 다대일이나 일대다 관계가 가장 많이 사용되는 것 같다. 나머지는 별로 못봄..
단방향, 양방향
실제로 SQL에서 사용하는 과정은 테이블의 조인을 사용해서 양방향의 쿼리를 작성하는 것이 가능하기 때문에 방향이라는 개념은 없지만, 객체 지향적으로 바라보았을 때는 참조용 필드를 가지고 연관된 객체를 조회하기 때문에 필요한 개념이라고 볼 수 있다.
객체 관계에서 한 쪽만을 참조하는 것이 단방향, 양쪽이 참조하는 것이 양방향
연관관계의 주인
테이블이 연관관계를 맺는건 테이블 간의 하나의 외래키를 통해서 연관관계를 맺는데, 그렇기 때문에 테이블의 연관관계를 관리하는 포인트는 외래 키 하나이다. 하지만 만약 서로 양방향으로 참조하고 있는 경우에는 서로가 서로를 참조하고 있기 때문에 연관관계를 관리하는 포인트가 2개라고 볼 수 있다.
여기서 연관관계에서 외래 키를 관리하는 것을 연관관계의 주인이라고 한다.
대부분은 외래 키를 가지고 있는 엔티티를 연관관계의 주인으로 정하긴 한다.
연관관계의 주인은 mappedBy속성을 사용하지 않는다.
Last updated
Was this helpful?