구조고민 #1 @OneToMany를 사용해야 할 때는 언제일까?

Kim Dong Kyun·2023년 1월 20일
1

Today I learned

목록 보기
37/43
post-thumbnail

1. 기존 방식

→ String으로 된 List 형태를 사용자에게 요구하고, DB에도 List 형식으로 저장하는 형태

  • 단점
    1. Category는 테이블입니다. 테이블에 List 형태로 넣는다고 한다면, findBy할때 2중 for문을 돌게 됩니다(전체 테이블에서 한번, List에서 한번)
    2. Category 테이블의 의미가 없어집니다. 사용자는 List형태로 본인의 필드에 넣기만 해도 위와 같은 형식은 작동 할 것입니다. 테이블을 하나 만드는 것은 그만한 이유가 있으므로 이 방법은 좋지 않습니다.

2. 왜 OneToMany를 사용해야 하는가?

  1. OneToMany 를 사용하면 하나의 판매자가 여러 개의 Category 객체를 가집니다. 이 방식으로 우리가 굳이 List 형태의 데이터를 요청 할 필요 없이, 저장된 객체들을 List 형태로 자연스럽게 반환 할 수 있습니다.
  2. 더불어 판매자가 “카테고리” 를 설정하는 이유는, (굳이 introduce, 즉 소개글과 나누어 우리가 만든 이유는) 명세에는 요구되어 있지 않지만 “카테고리로 검색” 등의 기능을 염두 해 두었기 때문일 것입니다.
  3. 따라서 카테고리 테이블에, Group By 등 SQL Query 를 사용하여 특정 카테고리(ex:강아지)를 가지는(즉, 판매하는) 판매자를 모두 조회할 수 있습니다. 단 하나의 쿼리만 날리면 되죠

위와 같은 형태로 사용하게 됩니다.


팀 노션에도 올려놨습니다.

0개의 댓글