객체 연관관계 vs 테이블 연관관계
- 테이블은 외래키로 연관 관계를 맺는다.
- 객체는 참조(주소)로 연관관계를 맺는다.
방향(단방향, 양방향)
- 회원 → 주문 또는 주문 → 회원 둘 중 한 쪽만 참조하는 것을 단방향 관계라고 한다.
- 회원 → 주문, 주문 → 회원 양쪽 모두 서로 참조하는 것을 양방향 관계라고 한다.
- 테이블에서의 관계는 항상 양방향이다.
다중성 (다대일, 일대다, 다대다)
- 회원은 여러 주문을 할 수 있기 때문에, 회원(1)과 주문(N)은 일대다 관계이다.
- 주문은 여러 회원에 의해 발생할 수 있기 때문에, 주문(N)과 회원(1)은 다대일 관계이다.
연관관계 주인 (mappedBy)
- 객체를 양방향 연관관계로 만들면, 연관관계의 주인을 정해야 한다.
- 외래키를 관리할 객체를 지정한다. (INSERT, UPDATE, DELETE)
- 연관관계 주인만이, 외래키를 등록 수정 삭제 할 수 있다. (주인이 아닌쪽은 읽기만 가능하다.)
- 테이블중 FK 가 있는 쪽이 연관관계 주인이 된다. (회원(1) - 주문(N) → 주문 엔티티가 연관관계의 주인이 된다.)