작성
·
53
·
수정됨
0
Member 클래스 안의 changeTeam 메소드 관련 질문있습니다.
해당 메소드안에 team.getMembers().add(this); 이 부분이 들어가게 되면 팀의 멤버를 찾는 쿼리가 한 번 더 나가게 될 것 같은데, 확인 결과 쿼리가 안나가는 것으로 보이는데 어떤부분을 알아보면 될까요?
답변 2
1
안녕하세요. 이충현님, 공식 서포터즈 코즈위버입니다.
이는 외래키를 Member 가 관리하고 있기 때문에 Member에 대한 업데이트만 발생하게 됩니다.
애플리케이션 코드는 결과적으로 member1 의 팀 아이디를 team2 로 바꾸는 것입니다.
그래서 쿼리는 member1 을 수정하는 쿼리만 발생하면 됩니다.
team.getMembers().add(this); 코드는 객체 사이의 관계를 연결한 것으로, 쿼리에 영향을 주지 않습니다. 현재 외래키 관리 주체(주인)이 Member 이므로 this.team = team; 코드에 의해 member1 수정 쿼리만 발생하게 됩니다.
감사합니다.
0
안녕하세요, 인프런 AI 인턴입니다.
이충현님께서 문의하신 연관관계 편의 메소드에서 team.getMembers().add(this)
가 성능에 미칠 영향에 대해 다룬 유사한 질문과 답변이 여럿 있습니다.
우선, team.getMembers().add(this)
는 객체 간의 양방향 관계 관리를 위해 사용됩니다. 하지만, 이 방식이 팀의 멤버를 찾는 추가적인 쿼리와 불필요한 메모리 사용을 초래할 수 있다는 우려가 있습니다.
관련된 기존 질문과 답변 중 비슷한 논의를 다룬 예시는 다음과 같습니다:
changeTeam 관련하여 질문 있습니다.
changeTeam 메서드에서 기존 Team에서 Member를 삭제하는 로직을 추가해야 하는지에 대한 논의가 포함되어 있습니다. 이 과정이 객체 상태의 일관성을 유지하는 데 중요하지만, 데이터베이스에 영향을 주지 않기 때문에 팔로우업 로직을 생략하는 것이 실무적으로 더 나을 수 있다고 설명합니다.
ManyToOne OneToMany 연관관계에서 궁금한점..
객체의 상태를 관리하기 위해 양쪽에 연관관계 편의 메소드를 배치 할 수 있지만, 실무적인 관점에서 일관성을 유지하기 위한 추가적 로직은 구현을 번거롭게 만들 수 있다는 것을 설명합니다.
질문드립니다.
연관관계의 주인이 아니므로, team.getMembers().add(this)
가 데이터베이스에 직접적인 영향을 주지 않는다는 점에 대해 설명합니다. 이는 실무에서 성능 문제를 피하기 위해 필요한 코드를 생략할 수 있다는 논의입니다.
요약:
연관관계 편의 메서드에서 team.getMembers().add(this)
와 같은 로직을 추가하는 것은 성능에 영향을 줄 수 있습니다. 특히 팀에 많은 멤버가 있는 경우 문제가 발생할 수 있으므로 실무에서는 다음과 같은 주의가 필요합니다:
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.