1. 기존 방식
→ String으로 된 List 형태를 사용자에게 요구하고, DB에도 List 형식으로 저장하는 형태
- 단점
- Category는 테이블입니다. 테이블에 List 형태로 넣는다고 한다면, findBy할때 2중 for문을 돌게 됩니다(전체 테이블에서 한번, List에서 한번)
- Category 테이블의 의미가 없어집니다. 사용자는 List형태로 본인의 필드에 넣기만 해도 위와 같은 형식은 작동 할 것입니다. 테이블을 하나 만드는 것은 그만한 이유가 있으므로 이 방법은 좋지 않습니다.
2. 왜 OneToMany를 사용해야 하는가?
- OneToMany 를 사용하면 하나의 판매자가 여러 개의 Category 객체를 가집니다. 이 방식으로 우리가 굳이 List 형태의 데이터를 요청 할 필요 없이, 저장된 객체들을 List 형태로 자연스럽게 반환 할 수 있습니다.
- 더불어 판매자가 “카테고리” 를 설정하는 이유는, (굳이 introduce, 즉 소개글과 나누어 우리가 만든 이유는) 명세에는 요구되어 있지 않지만 “카테고리로 검색” 등의 기능을 염두 해 두었기 때문일 것입니다.
- 따라서 카테고리 테이블에, Group By 등 SQL Query 를 사용하여 특정 카테고리(ex:강아지)를 가지는(즉, 판매하는) 판매자를 모두 조회할 수 있습니다. 단 하나의 쿼리만 날리면 되죠
위와 같은 형태로 사용하게 됩니다.
팀 노션에도 올려놨습니다.