다양한 연관관계 매핑(5) - slahsk/study GitHub Wiki
다대다: 새로운 기본 키 사용
추천하는 기본 키 생성 전략은 데이터베이스에서 자동으로 생성해주는 대리 키를 Long 값으로 사용 하는것이다. 간편하고 영구히 쓸 수 있으며 비즈니스에 의존하지 않는다.
중간에 연결되는 테이블에 새로운 기본 키를 사용한다.
@Entity
public class Order{
@Id
@GeneratedValue
@Column(name = "ORDER_ID")
private Long id; //복합키 방식과 다르게 기본키가 있다.
@ManyToMany
@JoinColumn(name = "MEMBER_ID")
private Member member;
@ManyToMany
@JoinColumn(name = "PRODUCT_ID")
private Product product;
private int orderAmount;
}
대리 키를 사요암으로서 복합 키를 사용하는 것보다 맵핑이 단순하고 이해하기 쉽다.
저장
Member member1 = mew Member();
member1.setId("member1");
member1.setUsername("회원1");
em.persist(member1);
Product productA = new Product();
productA.setId("productA");
productA.setName("상품1");
em.persist(productA);
Order order = new Order();
order.setMember(member1);
order.setProduct(productA);
order.setOrderAmount(2);
em.persist(order);
조회
Long orderId = 1L;
Order order = em.find(Order.class, orderId);
order.getMember();
order.getProduct();