강의

멘토링

로드맵

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

열심히들어요님의 프로필 이미지
열심히들어요

작성한 질문수

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

양방향 연관관계와 연관관계의 주인 1- 기본

연관관계 의문점

작성

·

257

1

만약 join이 3개,4개 일어나게 된다면 혹은 self join 시에는 어떻게 연관관계의 주인을 설정하나요??

퀴즈

61%나 틀려요. 한번 도전해보세요!

객체와 관계형 데이터베이스가 관계를 표현하는 방식의 근본적인 차이는 무엇일까요?

객체는 ID, 테이블은 이름

객체는 참조, 테이블은 외래 키

객체는 속성, 테이블은 레코드

객체는 단방향, 테이블은 양방향

답변 1

2

김영한님의 프로필 이미지
김영한
지식공유자

안녕하세요. jooseongho95님

연관관계의 주인은 외래 키가 있는 곳으로 잡으시면 됩니다. 따라서 조인이 발생하는 숫자와는 무관합니다.

추가로 JPA에서 복합키의 경우 묶어서 하나로 생각하시면 됩니다.

복합키에 대한 내용은 JPA 책 7.3 복합 키와 식별 관계 매핑을 참고해주세요.

self join시에는 연관관계의 주인이면서 동시에 주인이 아니게 됩니다.

활용1편에서 가져왔는데, 다음 예시를 보시면 이해가 되실거에요.

package jpabook.jpashop.domain;

import jpabook.jpashop.domain.item.Item;
import lombok.Getter;
import lombok.Setter;

import javax.persistence.*;
import java.util.ArrayList;
import java.util.List;

import static javax.persistence.FetchType.*;

@Entity
@Getter @Setter
public class Category {

@Id @GeneratedValue
@Column(name = "category_id")
private Long id;

private String name;

@ManyToOne(fetch = LAZY)
@JoinColumn(name = "parent_id")
private Category parent;

@OneToMany(mappedBy = "parent")
private List<Category> child = new ArrayList<>();

//==연관관계 메서드==//
public void addChildCategory(Category child) {
this.child.add(child);
child.setParent(this);
}

}

감사합니다.

열심히들어요님의 프로필 이미지
열심히들어요

작성한 질문수

질문하기