JAVA

헷갈리는 엔티티 연관관계 매핑.

포금이 2024. 4. 11. 13:08

사용자가 상품을 위시리스트에 담는 기능을 만들려 한다.

User, Wishlist, ProductSize 세가지 엔티티.

Wishlist 테이블 중에서, 해당 유저와 해당 프로덕트가 있는지 한번에 찾는 쿼리를 가능케 하고싶다.

그럴라면 세가지는 ㄱ어떻게 매핑이 되어야 하는지?

 

라고 한다.

엔티티들을 추상적으로 내마음ㅇ대로 웹페이지 보면서 관계도를 생각하지말고,

db에 출력되는 테이블로 생각을 해보자.

사람하나당 장바구니 한개만 가질수 있겠지? 당연히? 물건담을때 장바구니 하나로 담으니까?

하고 user랑 wishlist를 1:1 관계로 생각했었는데, 이러면 안된다 ㅜ db 테이블로 생각해야한다.

 

wishlist테이블엔 user와 product컬럼이 있다. 

동일한 userid가 여러개 들어갈 수 있다. -> 여러개의 wishlist가 하나의 user에 속할 수 있다.

동일한 product가 여러개 들어갈 수 있다. /단, userid는 달라야함 -> 여러개의 wishlist가 하나의 productㅇㅔ 속할 수 있다.

 

wishlist_id user_id product_id
1 3 12
2 3 13
3 3 14
4 2 12
5 6 12
6 6 14

 

이런식으로 되겠다. 

 

앞으로 매핑할때, 머릿속으로 테이블을 그려서 설계하도록 해보자.

 

저거 표 한통을 매핑할때 고려하는게 아니고, 저 표중에서 row한줄 각각이 매핑할때 고려 대상이다.

row한줄이 엔티티 인스턴스 각각 이기 때문.

 

 

그럼 저장할때..뭐부터 해야하는지... 헷갈린다.

 

이부분 잘 연구해 봐야한다.

wishlist에서 set user를 하는건지,

user에서 set wishlist를 하는건지?

productsize에서 set wishlist를 하는건지

얘네들의 기준과 순서 이런거 연구해보자.