-
Notifications
You must be signed in to change notification settings - Fork 4
Open
Labels
Description
๋ฌด์์ ์๊ฒ ๋์๋์?
์๋ฐฉํฅ ๋งคํ
- ์๋ฐฉํฅ ๋งคํ์ ๋ ๊ฐ์ฒด๊ฐ ์๋ก ์ฐธ์กฐํด์ผ ํ๋ ์ํฉ์์ ์ ์ํ๋ ์ฐ๊ด๊ด๊ณ ๋ฐฉ์์ด๋ค.
- ์ค์ ๋ก๋ ๊ฐ๊ฐ์ ๋จ๋ฐฉํฅ ๋งคํ์ด ์กด์ฌํ๋ ๊ฒ์ด๋ฉฐ ์ด๋ฅผ ํฉ์ณ ์๋ฐฉํฅ์ ์๋ฏธํ๋ค.
MappedBy ์ฌ์ฉ ์ด์
- ํ์ฌ Member์ Team์ N:1 ๊ด๊ณ์ด๋ค.
- ์ฌ๊ธฐ์ ์๋ฐฉํฅ ๋งคํ์ ์ ์ฉํ๋ค๋ฉด, Member ๊ฐ์ฒด๋ฟ๋ง ์๋๋ผ Team ๊ฐ์ฒด๋ members ํ๋๋ฅผ ํตํด MEMBER ํ ์ด๋ธ์ ์ ๊ทผ์ด ๊ฐ๋ฅํด์ง๊ธฐ ๋๋ฌธ์ ํผ๋์ด ์๊ธธ ์ ์๋ค.
- ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ๋ ๊ฐ์ฒด์ค ํ๋์ ๊ฐ์ฒด๋ง ํ ์ด๋ธ์ ๊ด๋ฆฌํ ์ ์๋๋ก ์ ํ๋ ๊ฒ์ด MappedBy ์ต์ ์ด๋ค. ๊ทธ๋ ๋ค๋ฉด ์ด๋ ๊ณณ์ ํด๋น ์ต์ ์ ์ฌ์ฉํ๋ ๊ฒ ์ข์๊น?
MappedBy ์์น
@Entity
public class Member {
@Id @GeneratedValue
private Long id;
@Column(name = "USERNAME")
private String name;
private int age;
@ManyToOne
@JoinColumn(name = "TEAM_ID")
private Team team;
โฆ Getter, Setter ์๋ต
}@Entity
public class Team {
@Id @GeneratedValue
private Long id;
private String name;
@OneToMany(mappedBy = "team")
List<Member> members = new ArrayList<Member>();
โฆ Getter, Setter ์๋ต
}- ์ฃผ์ธ์ด ์๋ ๊ฐ์ฒด์ MappedBy๋ฅผ ์ ์ฉํด์ผ ํ๋ค.
- ์์ ์์๋ Team ๊ฐ์ฒด์ MappedBy๊ฐ ์ ์ฉ๋์ด ์๋ ๊ฒ์ ๋ณผ ์ ์๋๋ฐ ์ด ๊ฒฝ์ฐ์๋ Team ๊ฐ์ฒด๋ MEMBER ํ ์ด๋ธ์ ๊ด๋ฆฌํ ์ ์๊ณ Member ๊ฐ์ฒด๋ง์ด ๊ถํ์ ๋ฐ๊ณ ์ฃผ์ธ์ด ์๋ ์ชฝ์ ์ฝ๊ธฐ(์กฐํ)๋ง ๊ฐ๋ฅํด์ง๋ค. ์ฆ, MappedBy๊ฐ ์ ์๋์ง ์์ ๊ฐ์ฒด๊ฐ ์ฃผ์ธ(Owner)๊ฐ ๋๋ ๊ฒ์ด๋ค.
- ์ผ๋ฐ์ ์ผ๋ก ์ธ๋ํค๋ฅผ ๊ฐ์ง ๊ฐ์ฒด๋ฅผ ์ฃผ์ธ์ผ๋ก ์ ์ํ๋ ๊ฒ์ด ์ข๋ค.(์ธ๋ํค๋ฅผ ๊ฐ์ง Member ๊ฐ์ฒด๊ฐ ์ฃผ์ธ)
์ด๋ ค์ด ๋ด์ฉ์ด ์์๋ค๋ฉด ์ด๋ฅผ ์ด๋ป๊ฒ ํด๊ฒฐํ์๋์?
x
์ด๋ค ์๋ฃ๋ฅผ ์ฐธ๊ณ ํ์๋์?
JungYoonShin