인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

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

wonderfulplace님의 프로필 이미지
wonderfulplace

작성한 질문수

실전! Querydsl

연관관계 편의 메소드에서 질문 있습니다!

작성

·

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)하는 것으로 보시면 될 것 같습니다.

제 설명이 부족하거나 이해가 안되면 댓글 남겨주세요.

감사합니다. 

wonderfulplace님의 프로필 이미지
wonderfulplace

작성한 질문수

질문하기