다양한 연관관계 매핑(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();