-
카테고리
-
세부 분야
백엔드
-
해결 여부
미해결
OneToMany, ManyToOne 의존성 주입 질문입니다.
22.02.11 10:25 작성 조회수 172
0
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.
1. 강의 내용과 관련된 질문을 남겨주세요.
2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.
(자주 하는 질문 링크: https://bit.ly/3fX6ygx)
3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.
(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)
질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.
=========================================
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예/아니오)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)
[질문 내용]
1. 강의 내용과 관련된 질문을 남겨주세요.
2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.
(자주 하는 질문 링크: https://bit.ly/3fX6ygx)
3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.
(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)
질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.
=========================================
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예/아니오)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)
[질문 내용]
@Getter
public class Parent {
@Id
@Column(name = "parent_id")
private Long id;
@OneToMany(mappedBy = "parent")
private List<Child> childList = new ArrayList<>();
}
public class Child {
@Id
@Column(name = "child_id")
private Long id;
@ManyToOne
@JoinColumn(name = "parent_id")
private parent;
public Child(parent) {
this.parent = parent;
parent.getChildList().add(this);
}
}
child 를 생성 할때 양방향 의존성 주입을 위해
parent.getChildLIst().add(this) 를 해주는 데요 만약 childList 에 100만건이 있으면
생성을 할때 마다 100만건을 조회 하게 될것 같은데 문제가 없을까요?
답변을 작성해보세요.
0
d1215
질문자2022.02.12
직접 답변해 주셔서 정말 감사합니다!!
그렇다면 이렇게 되는 경우 무조건 단방향으로 설정을 해줘야 하는걸까요?
아니면 무조건 parent 가 존재한다는 가정하에 child 를 생성할때 아래 처럼
child 에만 parent에 의존성 주입을 해주면 문제가 없을까요?
@Getter
public class Parent {
@Id
@Column(name = "parent_id")
private Long id;
@OneToMany(mappedBy = "parent")
private List<Child> childList = new ArrayList<>();
}
public class Child {
@Id
@Column(name = "child_id")
private Long id;
@ManyToOne
@JoinColumn(name = "parent_id")
private parent;
public Child(parent) {
this.parent = parent;
}
}
김영한
지식공유자2022.02.14
한쪽 방향이 100만건 정도 되는 경우라면 단방향으로 설정해주셔야 합니다. 혹시라도 반대쪽을 조회하게 되면 OOM이 발생할 수 있습니다. (하지만 해당 ID에 한정해서 조회하기 때문에 실제 이런 경우는 거의 없겠지요?)
참고로 JPA는 양방향 연관관계가 있는 경우 연관관계의 주인이 아닌쪽에 데이터를 넣지 않아도, 반대쪽을 조회할 수 있습니다.(양방향 연관관계 부분을 복습해주세요.)
감사합니다.
답변 1