JPA에서 연관 관계가 필요한 이유와 연관 관계의 주인에 대해 설명해 주세요.
JPA는 ORM 방식으로, 객체와 관계형 DB의 테이블을 매핑해주어야 한다.
그런데 객체는 참조를 사용해서 관계를 맺고, 테이블은 외래 키(
FK) 를 사용해서 관계를 맺는다. 이렇게 완전히 다른 특징을 가지고 있기 때문에 어노테이션을 사용해서 연관 관계 매핑을 해주어야 한다.객체에서 연관 관계는 한 쪽에서만 참조하는 경우 단방향이고, 서로 참조하는 경우 양방향이다.
반면 테이블에서는 외래 키 하나로
JOIN을 통해 양방향 관계가 가능하다.엔티티를 양방향 연관 관계로 설정하면 객체의 참조는 둘인데 외래 키는 하나이기 때문에 둘 사이에 차이가 발생하기 때문에 연관 관계의 주인이라는 것을 정해야 한다.
양방향 연관 관계시 연관 관계의 주인은 외래 키가 있는 곳으로 정하는 것이 좋고
@JoinColumn을 사용하며, 반대편 연관 관계의 주인이 아닌 곳에서는mappedBy속성을 사용해 연관 관계의 주인을 지정해야 한다.
Last updated