inflearn logo
강의

Khóa học

Chia sẻ kiến thức

Thực hành! Dữ liệu Spring JPA

Mô hình miền mẫu và xác nhận hoạt động

changeTeam 메서드 질문

Đã giải quyết

4

Minho Lee

7 câu hỏi đã được viết

0

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.

1. 강의 내용과 관련된 질문을 남겨주세요.
2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.
(자주 하는 질문 링크: https://bit.ly/3fX6ygx)
3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.
(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)

질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.
=========================================
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예/아니오)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)

[질문 내용]
여기에 질문 내용을 남겨주세요.

08:40 쯤에

public void changeTeam(Team team) {
  this.team = team;
  team.getMembers().add(this);
}

이 부분에서, 내 팀을 변경해주고 변경할 팀에 해당 member를 넣어주는데 팀만 변경해 주면 되지 않나요?

따로 해당 team의 .getMember에 해당 멤버를 넣어주는 이유가 무엇인지 궁금합니다.

 

저장하기 전 까지는 해당 영속성에서는 이전 team에 할당이 되어 있어 수동으로 바꿔주는 것 인가요?

java spring spring-boot jpa

Câu trả lời 1

1

communityai8509

안녕하세요, 인프런 AI 인턴입니다. Minho Lee님.

스프링 데이터 JPA 강의에서 다루고 있는 changeTeam 메서드에 대한 질문이시네요. 양방향 연관관계 설정 시 객체 간의 상태 일관성을 맞추기 위한 메서드로 이해할 수 있습니다.

changeTeam 메서드의 역할

  1. 현재 팀 변경: this.team = team;을 통해 현재 Member 객체의 팀을 새로운 팀 객체로 변경합니다. 이는 외래키가 변경되는 것이고, 연관관계의 주인인 Member 객체에 대해 데이터베이스의 외래 키가 변경되는 것입니다.

  2. 방향을 맞춰주는 이유: team.getMembers().add(this);는 새로운 팀 객체의 members 리스트에 현재 Member 객체를 추가하여 객체 그래프의 일관성을 맞춰주는 것입니다. 이는 연관관계의 주인이 아닌 객체 관점에서 다른 쪽 방향의 일관성도 맞추어 주기 위해 필요합니다. 즉, 데이터베이스의 상태와 자바 객체들의 메모리 상의 상태를 동일하게 유지하기 위함입니다.

영속성 컨텍스트가 존재할 때 JPA는 데이터베이스와 객체 상태의 차이를 감지하지 못하기 때문에, 이를 수동으로 맞춰줘야 합니다. 따라서, 위와 같은 편의 메서드를 사용하여 객체 간의 상태를 명시적으로 동기화하는 것이 필요합니다.

다음은 관련된 질문들이 해결 방법을 제시하고 있으니 참고하시기 바랍니다:

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

0

Minho Lee

참고 링크 보고 이해했어, 고마워~

existsByUserIdAndProjectId vs existsByUserAndProject 중 어떤 방식이 적절할까요?

0

77

1

existsByUserIdAndProjectId vs existsByUserAndProject 중 어떤 방식이 적절할까요?

0

109

3

MemberRepository 구현체

0

61

1

pdf 표현 질문드립니다.

0

64

1

로그가 남지 않는 문제.

0

88

1

테스트 라이브러리가 강의는 junit4가 맞나요??

0

73

2

pdf 파일과 차이점이 있는 것같은데 문제 없나요?

0

73

2

@PrePersist, @PreUpdate 호출 시점 질문드립니다.

0

95

2

Sort 인터페이스는 잘 사용 안하나요?

0

52

1

스캔대상 질문드립니다.

0

46

1

하이버네이트6에서의 최적화에 이은 질문

0

88

1

save() vs saveAndFlush DB 통신 횟수

0

55

1

순수 JPA 리포지토리 코드 수정부분

0

87

2

bulk연산 후 flush하는 이유를 모르겠어요

0

153

3

bulk insert 질문입니다.

0

185

2

교만했던 것 같아요.

0

147

1

RESTful 강의는 안하시는 건지 궁금합니다.

0

151

2

동적 테이블에 대한 질문

0

87

1

영속성 전이와 연관관계

0

132

2

강의 10:25 질문

0

75

1

단건 update 질문

0

98

2

엔티티 와 도메인의 경계

0

129

1

UsernameOnlyDto 타입 type mismatch 오류

0

122

1

Projection 개념과 데이터 전달과정에 대해 질문 있습니다.

0

137

1