요구사항 분석
폴더 테이블 설계 및 폴더와 회원의 관계
- 폴더 테이블에 필요한 정보
- 폴더명(name): 회원이 등록한 폴더 이름을 저장
- 회원ID(user): 폴더를 등록한 회원의 ID를 저장
- A회원이 생성한 폴더는 A회원에게만 보여야 함
- 폴더와 회원의 관계
- '폴더와 회원'의 관계는 '상품과 회원'의 관계와 동일
- 폴더 : 회원 = N : 1, 다대일 관계
- 회원 객체에서 폴더 객체를 조회하는 경우가 없기 때문에 폴더와 회원을 N : 1 단방향 연관관계로 설정
상품과 폴더의 관계
- 상품은 추가될 폴더의 정보가 필요함
- 관심 상품에 폴더 등록
- 상품은 여러개의 폴더 등록 가능
- 폴더 : 상품 = N : 1
- 폴더에 관심 상품 등록
- 하나의 폴더는 여러 개의 상품 포함 가능
- 폴더 : 상품 = 1 : N
- 결과적으로 상품과 폴더는 N : M 다대다 관계
- @ManyToMany 애너테이션을 사용하여 다대다 관계를 풀수도 있지만
- 상품_폴더 중간 테이블을 만들어보기
- 상품 : 상품_폴더 = 1 : N
- 폴더 : 상품_폴더 = 1 : N
- 연관관계의 방향 선택
- 관심 상품을 조회할 때 포함된 폴더들의 정보 필요
- 상품 객체를 기준으로 해당 폴더에 포함된 상품 조회
- 따라서 상품과 상품_폴더는 양방향 관계
- 폴더 객체에서 상품 객체를 조회하지 않을 예정이기 때문에 폴더는 상품_폴더와 관계를 맺지 않음