인프런 커뮤니티 질문&답변

ㅎㅅㅎ님의 프로필 이미지
ㅎㅅㅎ

작성한 질문수

실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발

엔티티 클래스 개발2

category 엔티티에선 부모 객체가 왜 필요한건가요?

작성

·

331

0

현재 실전 스프링부트와 jpa활용1편을 수강중입니다. 엔티티 클래스 개발2 에서 카테고리 클래스를 만들 때, 부모 객체는 왜 생성하는지 이해가 되지 않습니다..! 이미 카테고리 클래스 자체가 부모 클래스가 되는게 아닌가요..?

답변 1

3

안녕하세요. ㅎㅅㅎ님, 공식 서포터즈 코즈위버입니다.

카테고리의 구조는 부모와 자식관의 관계가 1:N 으로 무한히 확장가능하다는 특징이 있습니다. 쇼핑몰은 보통 3~5depth 의 카테고리를 갖습니다. 이 때 테이블 설계를 depth 만큼 속성을 추가할 경우 (가령 3depth, 대/중/소 카테고리를 사용할 경우,카테고리 테이블에는 '대카테고리', '중카테고리', '소카테고리' 속성을 생성) depth 가 늘어나거나 할 경우 카테고리 테이블에 속성을 추가해야 하는 불편함이 있습니다. 그래서 보통 parent_id 속성 하나만 두고 테이블을 재차 조인하여 조회하는 방법을 사용합니다.

 

아래와 같은 카테고리 테이블을 생각해주세요.

category_id(P.K) | parent_id | name

1 | null | 프로그래밍

2 | 1 | 자바

3 | 1 | C#

4 | 2 | JPA

5 | 2 | 스프링부트

이처럼 현재 카테고리가 Parent를 가지고 있느냐 아니냐 정보가 필요하여 카테고리 엔터티에 parent와 children 속성을 추가하는 것입니다.

 

또 parent, children 이 모두 있어야 부모 카테고리와 자식 카테고리를 왔다갔다 하며 탐색을 할 수 있습니다.

감사합니다.

ㅎㅅㅎ님의 프로필 이미지
ㅎㅅㅎ

작성한 질문수

질문하기