N:M 테이블 관계 설계하기
* 개요 4가지 JPA 관계 중에, N:M을 알아봅니다. N:M은 실무에서는 잘 사용하지 않는 관계로, 1:N, N:1로 나누어 관리하는 것이 좋습니다. * 특징 관계형 데이터베이스는 정규화된 테이블 2개로 다대다 관계를 표현할 수 없습니다. 따라서, 일대다, 다대일 관계로 풀어내야 합니다. 객체는 컬렉션을 사용해서 객체 2개로 다대다 관계가 가능합니다. @ManyToMany @JoinTable 2개를 이용해서, 각 MEMBER_ID, PRODUCT_ID를 PK, FK를 가지는 중간 테이블을 생성할 수 있습니다. 양방향 매핑, 단방향 매핑 모두 가능합니다. 하지만, 중간테이블에 주문시간, 수량같은 데이터가 추가되는 경우가 있을 수 있기 때문에 사용하지 않는게 좋습니다. * 한계 극복 중간 테이블을 엔티티..
N:1 테이블 관계 설계하기
* 개요 연관관계를 정하기 위해서는 단방향인지 양방향인지, 연관관계의 주인이 어디인지를 먼저 고려해야 합니다. * JPA에서 연관관계란? 테이블에서는 외래키 하나로, 테이블을 조인하고, 참조가 가능합니다. 따라서 사실상 방향이라는 개념이 없습니다. 하지만, 객체에서는 참조용 필드가 있는 쪽으로만 참조가 가능합니다. 한쪽만 참조하면 단방향, 양쪽이 모두 참조하여 양방향입니다. 예를 들어 A->B, B->A 처럼 참조가 2군데이면 양방향 객체 참조입니다. 이처럼 2군데로 참조하기 때문에, 외래키를 관리할 곳이 필요합니다. 이 외래키를 관리할 곳을 연관관계의 주인이라고 하며, 외래키가 주인이 아닌 곳은, 외래키에 영향을 주지 못하고 단지 조회만 가능합니다. * N:1 양방향 N:1 관계는, 가장 많이 사용하는..