jpa 양방향 연관관계
Member
@Entity
public class Member {
@Id @GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "member_id")
private Long id;
@OneToMany(mappedBy = "member")
private List<Order> orders = new ArrayList<>();
}
1:N (일 대 다) -> 한 회원이 여러 개의 주문을 가질 수 있기 때문에 -> 여러 개의 주문이라면 List 로 담아주어야한다.
Order
@Entity
public class Order {
@Id @GeneratedValue
@Column(name = "order_id")
private Long id;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "member_id")
private Member member;
}
N:1 (다 대 일) -> 주문에는 하나의 회원만 가질 수 있다. 한 주문에 여러 회원이 있을 리가 없기 때문.
양방향 연관관계라는 건 서로 연결되어있어서 서로 접근이 가능하다는 것을 뜻합니다.
- Member -> Order
- Order -> Member
형식으로 말이죠!
원래 DB 테이블은 FK 하나로 양방향으로 조회가 가능합니다.
Order 코드를 보면 Member 의 id 를 가지고있는 것이 보입니다. 즉, Order 테이블엔 Member_id (FK) 가 있다는 뜻입니다.