์ํฐํฐ ํด๋์ค
ERD
Member
์ํฐํฐ :Member.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 = username;
}
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);
}
}
@Setter
: ์ค๋ฌด์์ ๊ฐ๊ธ์ Setter๋ ์ฌ์ฉํ์ง ์๊ธฐ@NoArgsConstructor AccessLevel.PROTECTED
: ๊ธฐ๋ณธ ์์ฑ์ ๋ง๊ณ ์ถ์๋ฐ, JPA ์คํฉ์ PROTECTED
๋ก ์ด์ด๋์ด์ผ ํจ@ToString
์ ๊ฐ๊ธ์ ๋ด๋ถ ํ๋๋ง(์ฐ๊ด๊ด๊ณ ์๋ ํ๋๋ง)changeTeam()
์ผ๋ก ์๋ฐฉํฅ ์ฐ๊ด๊ด๊ณ ํ๋ฒ์ ์ฒ๋ฆฌ(์ฐ๊ด๊ด๊ณ ํธ์ ๋ฉ์๋)
Team
์ํฐํฐ :Team.java
@Entity
@Getter @Setter
@NoArgsConstructor(access = AccessLevel.PROTECTED)
@ToString(of = {"id", "name"})
public class Team {
@Id @GeneratedValue
@Column(name = "team_id")
private Long id;
private String name;
@OneToMany(mappedBy = "team")
private List<Member> members = new ArrayList<>();
public Team(String name) {
this.name = name;
}
}
Member
์ Team
์ ์๋ฐฉํฅ ์ฐ๊ด๊ด๊ณ, Member.team
์ด ์ฐ๊ด๊ด๊ณ์ ์ฃผ์ธ, Team.members
๋ ์ฐ๊ด๊ด๊ณ์ ์ฃผ์ธ์ด ์๋.
Member.team
์ด ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ธ๋ํค ๊ฐ์ ๋ณ๊ฒฝ, ๋ฐ๋ํธ์ ์ฝ๊ธฐ๋ง ๊ฐ๋ฅ