작성
·
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라는 컬럼을 참조하여 원하는 카테고리와 해당 카테고리에 속한 자식 카테고리들을 함께 조회할 수 있게 됩니다.
필드 명이 부모-자식 관계를 나타내는 명칭으로 되어 있기 때문에 조금 헷갈릴 수 있을 것 같습니다. 하지만 이 매핑은 자식 카테고리들의 목록을 부모 카테고리에서 조회하는 것을 도와주는 목적으로 설정된 것입니다.
더 궁금한 점이 있다면 댓글로 알려주세요. 감사합니다!