์ ๋ชจ๋ฅด๊ฒ ์ด์ ์ ๋ฆฌํด๋ณด๋ ์ฐ๊ด๊ด๊ณ ๋งคํ
ํ ์ด๋ธ์ ์ธ๋ํค ๊ฐ ํ๋๋ก ์๋ฐฉํฅ ํ ์ด๋ธ ์กฐํ๊ฐ ๊ฐ๋ฅํ์ง๋ง ๊ฐ์ฒด๋ ๊ทธ๋ ์ง ์๋ค
โ๏ธ ๋ญ๊ฐ ๊ฐ์ฒด์งํฅ์ค๋ฝ์ง ์์ ๋ฌธ์ ์ฝ๋ ์์
Team team = new Team();
team.setName("teamA");
em.persist(team);
Member member = new Member();
member.setName("memberA");
member.setTeamId(team.getId());
em.persist(member);
Member findMember = em.find(Member.class, member.getId());
Team findTeam = em.find(Team.class, findMember.getTeamId());
System.out.println(findMember);
ํ ์ด๋ธ์ ๋ง์ถฐ ์ธ๋ํค ๊ฐ์ ๊ทธ๋๋ก ๊ฐ์ง๊ณ ์์ ๊ฒฝ์ฐ ์ฐ๊ด๊ด๊ณ๊ฐ ์๊ธฐ ๋๋ฌธ์ member์ ์ฐ๊ด๋ team์ ๊ฐ์ ธ์ค๋ ค๋ฉด DB์ team์ ๊ณ์ ์์ฒญํด์ฃผ์ด์ผ ํ๋ค.
์ธ๋ํค ์๋ณ์๋ฅผ ์ง์ ๋ค๋ฃจ๋ ์ด์๊ฐ ๋ฐ์ํจ!
๐โโ๏ธ ๊ฐ์ฒด์งํฅ์ค๋ฝ๊ฒ ๋จ๋ฐฉํฅ ์ฐ๊ด๊ด๊ณ๋ฅผ ๋งคํํด์ฃผ๋ฉด
package hellojpa;
import javax.persistence.*;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
@Entity
//@Table(name="MBR") ํ
์ด๋ธ๋ช
๋ค๋ฅผ๋
@TableGenerator(
name = "MEMBER_SEQ_GENERATOR",
table = "MY_SEQUENCES",
pkColumnValue = "MEMBER_SEQ", allocationSize = 1)
/*
@SequenceGenerator(
name="MEMBER_SEQ_GENERATOR",
sequenceName = "MEMBER_SEQ", // ๋งค์นญํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ํ์ค ์ด๋ฆ
initialValue = 1, allocationSize = 1)
*/
public class Member{
@Id @GeneratedValue
@Column(name="MEMBER_ID")
private Long id;
@Column(name="USERNAME")
private String name;
@ManyToOne
@JoinColumn(name = "team_id")
private Team team;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Team getTeam() {
return team;
}
public void setTeam(Team team) {
this.team = team;
}
}
Team team = new Team();
team.setName("teamA");
em.persist(team);
Member member = new Member();
member.setName("memberA");
member.setTeam(team);
em.persist(member);
Member findMember = em.find(Member.class, member.getId());
System.out.println(findMember.getTeam().getId());
member์ team์ด ์ฐ๊ด๊ด๊ณ๋ก ๋งบ์ด์ก๊ธฐ ๋๋ฌธ์ member์์ getTeam()์ผ๋ก team ๊ฐ์ฒด๋ฅผ ๊บผ๋ผ ์ ์๋ค.
๋ค๋์ผ ๊ด๊ณ์์๋ ๋ค ์ชฝ์์ @ManyToOne ์ด๋
ธํ
์ด์
์ ์ ์ฉํด์ค๋ค. ๋ง์->ํ๋ = @Many To One = ๋ง Member ์ด๋ ๊ฒ ๊ทธ๋ฅ ์ฝ๋ ์์๋๋ก ์๊ฐํ๋ฉด ํธํ ๊ฒ ๊ฐ๋ค.
JoinColumn์ ์ธ๋ํค๋ฅผ ๊ด๋ฆฌํ๋ ํ
์ด๋ธ์์ ์ธ๋ํค๊ฐ ์ด๋ค ์ปฌ๋ผ๊ฐ์ผ๋ก ์ ์ฅ๋๋์ง๋ผ๊ณ ์๊ฐํ๋ฉด ๋๋ค. (์ฒจ์ ํท๊ฐ๋ ธ์..)
์ฌ๊ธฐ๊น์ง๊ฐ ๋จ๋ฐฉํฅ ์ฐ๊ด๊ด๊ณ์ธ๋ฐ
Team์์ Member๋ฅผ ์กฐํํ๊ณ ์ถ๋ค๋ฉด ์๋ฐฉํฅ์ผ๋ก ์ฐ๊ด๊ด๊ณ๋ฅผ ๋งบ์ด์ฃผ๋ฉด ๋๋ค.
package hellojpa;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import java.util.ArrayList;
import java.util.List;
@Entity
public class Team {
@Id @GeneratedValue
private Long id;
private String name;
@OneToMany(mappedBy = "team")
List<Member> memberList = new ArrayList<>();
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public List<Member> getMemberList() {
return memberList;
}
}
์ผ๋๋ค ์ฐ๊ด๊ด๊ณ๋ก ๋งคํํด์ฃผ๋ฉด ๋๋ค.
mappedby ์ ๋ค์ด๊ฐ ๊ฐ์ ๋ค ์ชฝ์ ๋ณ์๋ช
๊ณง team์ด ๋๋ค. (์ด๊ฒ๋ ์ฒจ์ ํท๊ฐ๋ ธ์..) Member ์ชฝ์ ๋ณ์๋ช
์ด teamTeam ์ด๋ผ๋ฉด 'Member์ชฝ teamTeam ๋ณ์์ ์ฐ๊ฒฐ๋๋ค' ๋ผ๋ ๋ป์์ mappedby = teamTeam ์ด ๋๋ ๊ฒ!
๋ค๋ง ์ฌ๊ธฐ์ ์ฝ๊ธฐ ์ ์ฉ์ด๋ฏ๋ก ์ฐ๊ด๊ด๊ณ์ ์ฃผ์ธ ์ชฝ์ ๊ฐ์ ์
๋ ฅํด์ผ ํ๋ค.