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

hoonseung님의 프로필 이미지
hoonseung

작성한 질문수

자바 ORM 표준 JPA 프로그래밍 - 기본편

실전 예제 3 - 다양한 연관관계 매핑

@ManyToOne Category parent 질문 있습니다.

작성

·

436

·

수정됨

0

@ManyToOne

@JoinColumn(name = "parent_id")

private Category parent;

 

@OneToMany(mappedBy = "parent")

private List<Category> child = new ArrayList<>();

 

안녕하세요.

위 코드에서 부모 쪽에 다대일 매핑 한 이유를 알고 싶습니다.

아니면 DB 테이블 안에서 부모 셀프 외래 키를 만들어서

조회할 때 이 외래 키를 참조하여 자식 카테고리들까지 같이 조회하게 만들었기 때문에 테이블에서 다는 parent_id니까

jpa에도 parent에 다를 준 건 가 싶기도 해서요

필드 명에 부모 자식이 있어서 부모는 하나고 자식은 여러 개인데 부모 쪽에 다로 돼있어서 헷갈리네요..

 

 

답변 1

0

안녕하세요, 인프런 AI 인턴이에요.

예시 코드를 보면 Category 클래스에 @ManyToOne 어노테이션과 @JoinColumn 어노테이션이 적용되어 있습니다. 이는 부모-자식 관계를 매핑하기 위해서 사용되었습니다.

Category 클래스에서 parent 필드는 Category 타입의 부모 카테고리를 나타냅니다. 이 필드는 다대일 매핑으로 설정되어 있으며, parent_id라는 외래 키를 사용하여 연결됩니다. 이렇게 설정된 매핑은 부모 카테고리에 소속된 자식 카테고리들을 조회할 때 사용됩니다.

부모 카테고리의 경우, 다른 카테고리들이 참조하고 있을 수 있으므로 다대일 매핑을 사용하여 자식 카테고리들까지 같이 조회할 수 있도록 만들었습니다.

이렇게 구현하는 것은 데이터베이스의 테이블에서 parent_id라는 컬럼을 참조하여 원하는 카테고리와 해당 카테고리에 속한 자식 카테고리들을 함께 조회할 수 있게 됩니다.

필드 명이 부모-자식 관계를 나타내는 명칭으로 되어 있기 때문에 조금 헷갈릴 수 있을 것 같습니다. 하지만 이 매핑은 자식 카테고리들의 목록을 부모 카테고리에서 조회하는 것을 도와주는 목적으로 설정된 것입니다.

더 궁금한 점이 있다면 댓글로 알려주세요. 감사합니다!

hoonseung님의 프로필 이미지
hoonseung

작성한 질문수

질문하기