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

dev_dev_dev님의 프로필 이미지

작성한 질문수

실전! 스프링 데이터 JPA

예제 도메인 모델과 동작확인

질문드립니다.

20.07.23 15:56 작성

·

207

9

9:17초에서 changeTeam 함수를 보다가 문득 질문이 들어 질문 남깁니다.

함수명 자체는 팀을 '바꾼다'는 의미를 가지고 있는데 list에 add를 해주는 방식(team.getMembers().add(this))으로 구현하셨습니다. 그러면 리스트에 있던 기존 데이터객체의 jpa에서 알아서 update되는지, 아니면 무시하고 새로 add 되는지 궁굼합니다.

답변 1

5

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

2020. 07. 23. 21:45

안녕하세요. 유동관님

기본편 연관관계의 주인을 떠올려보시면 바로 답을 아실 수 있습니다^^

Member.team은 연관관계의 주인이므로 JPA 동작에 영향을 줍니다.

반면에 Team.members는 연관관계의 주인이 아니므로 JPA 동작에 영향을 주지 않습니다.

그래서 가장 확실한 코드는 기존에 컬렉션에 있는 team을 다 찾아서 빼는 동작까지 구현을 해야 합니다. 다만 실무에서는 너무 복잡해지기도 하고, 연관관계의 주인이 아니므로 JPA와 DB 변경에 영향을 주지 않아서, 이런 부분은 생략하기도 합니다.

감사합니다.