작성
·
211
0
안녕하세요 강의 수강 중 연관관계 편의 메소드에서 궁금한 점이 있어서 질문 드립니다.
Members.java
@Entity
@Getter @Setter
@NoArgsConstructor(access = AccessLevel.PROTECTED)
@ToString(of = {"id", "username", "age"})
public class Member {
@Id @GeneratedValue
@Column(name = "member_id")
private Long id;
private String username;
private int age;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "team_id")
private Team team;
public Member(String username) {
this(username, 0);
}
public Member(String username, int age) {
this(username, age, null);
}
public Member(String username, int age, Team team) {
this.username = username;
this.age = age;
if (team != null) {
changeTeam(team);
}
}
public void changeTeam(Team team) {
this.team = team;
team.getMembers().add(this);
}
}
public void changeTeam(Team team) {
this.team = team;
team.getMembers().add(this);
}
위의 메소드에서 만약 인자로 넘어온 team이 teamA라면 team.getMembers()를 하면 teamA에 속해 있는 member들이 쭉 뽑아지는거 아닌가요? 맞다면 이 getMembers()는 어디에 있는 member들을 뽑아오는 건가요? 뭔가 머리 속에 상상이 안돼서 그런데 구체적인 예시를 들어주시면 감사하겠습니닷!
답변 1
1
안녕하세요. wonderfulplace님, 공식 서포터즈 OMG입니다.
members란 이름 때문에 혼동이 오신거 같아요.
team.getMembers().add(this);
위의 코드를
teamA.memberList().add(member);
이렇게 바꾸면 감이 오실까요?
team class에는 member를 List로 관리합니다.
team 클래스의 멤버 변수인 List<Member>에 changeTeam()을 호출한 해당 member를 추가(add)하는 것으로 보시면 될 것 같습니다.
제 설명이 부족하거나 이해가 안되면 댓글 남겨주세요.
감사합니다.