๋ค๋์ผ [N : 1] @ManyToOne ๋จ๋ฐฉํฅ
Member(N) : Team(1) ์ ๋ค๋์ผ ๊ด๊ณ
ํ์ชฝ์ด ๊ด๊ณ๋ฅผ ๋งบ์ ์ชฝ์ ์ฌ๋ฌ ๊ฐ์ฒด๋ฅผ ๊ฐ๋ ๊ฒ์ ์๋ฏธ
ํ๋์ ํ(1)์ ์ฌ๋ฌ ๋ฉค๋ฒ(N)๋ฅผ ๊ฐ๋๋ค
Member.class
@ManyToOne
@JoinColumn(name = "team_id")
private Team team;
Many -> One
Member(N) -> Team(1)
name ์์ฑ์๋ ๋งคํํ ์ธ๋ ํค ์ด๋ฆ ์ง์ ํ๋ค.
๋ค๋์ผ [N : 1] OneToMany ์๋ฐฉํฅ
Team ๊ฐ์ฒด์์ ๋ฐ๋์ชฝ Member ๋ฅผ ์ฐธ์กฐํ๊ธฐ ์ํ List members ๋ฅผ ์์ฑํด์ค๋ค.
์ด๋ ๊ฒ ์์ฑํด์ค๋ ํ ์ด๋ธ์๋ ์ํฅ์ ์ฃผ์ง ์๋๋ค.
@OneToMany(mappedBy = "team")
private List<Member> members = new ArrayList<>();
mappedBy ์์ฑ์ ์๋ฐฉํฅ ๋งคํ์ผ ๋ ์ฌ์ฉ , ์ฃผ์ธ์ ์ง์ ํด์ค๋ค .
์ฐ๊ด๊ด๊ณ์ ์ฃผ์ธ์ ์ธ๋ํค๋ฅผ ๊ฐ๊ณ ์๋ Member.team ์ด ์ฃผ์ธ์ด ๊ด๋ฆฌ๋ฅผ ํ๋ค .
์ฐ๊ด๊ด๊ณ์ ์ฃผ์ธ๋ง์ด ์ธ๋ํค๋ฅผ ๊ด๋ฆฌ,๋ฑ๋ก,์์ ํ ์ ์๋ค.
๋ฐ๋์ชฝ์ ์ฝ๊ธฐ๋ง ๊ฐ๋ฅํ๋ค.
์ผ๋๋ค [1:N] ๋จ๋ฐฉํฅ
๊ถ์ฅํ์ง ์๋ ๋ชจ๋ธ์ด๋ค.
์ผ๋๋ค ๋จ๋ฐฉํฅ์ ์ผ๋๋ค(1:N)์์ ์ผ(1)์ด ์ฐ๊ด๊ด๊ณ์ ์ฃผ์ธ์ด๋ค.
Team(1) ์ด ์ธ๋ํค๋ฅผ ๊ด๋ฆฌ , ์ฐ๊ด๊ด๊ณ์ ์ฃผ์ธ์ด ๋๋ ๋ชจ๋ธ
๋จ์
์ํฐํฐ๊ฐ ๊ด๋ฆฌํ๋ ์ธ๋ํค๊ฐ ๋ค๋ฅธ ํ ์ด๋ธ์ ์๋ค.
์ฐ๊ด๊ด๊ณ ๊ด๋ฆฌ๋ฅผ ์ํด ์ถ๊ฐ๋ก UPDATE SQL ์ ์คํํ๋ค.
์ผ๋๋ค ๋จ๋ฐฉํฅ ๋งคํ๋ณด๋ค๋ ๋ค๋์ผ ์๋ฐฉํฅ ๋งคํ์ ์ฌ์ฉํ์ !
์ผ๋์ผ [1:1]
์ธ๋ํค์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ ๋ํฌ(UNI) ์ ์ฝ์กฐ๊ฑด์ด ์ถ๊ฐ๋ ๊ฒ
์ผ๋์ผ ๊ด๊ณ๋ ๊ทธ ๋ฐ๋๋ ์ผ๋์ผ ๊ด๊ณ์ด๋ค.
์ธ๋ํค๋ ์ฃผ ํ ์ด๋ธ์ด๋ ๋์ ํ ์ด๋ธ ์ค์ ์ ํํ๋ฉด ๋๋ค .
๋์ค์ ํ๊ตฐ๋ฐ๋ง ๋ฃ์ผ๋ฉด ๋๋ค . ์๊ด์๋ค.
cf) ์ฃผํ ์ด๋ธ : ์ฃผ๋ก ์์ธ์คํ๋ ํ ์ด๋ธ์ ๋งํ๋ค.
๋ฃฐ์ด ์๋ค๊ณ ๊ฐ์ : Member ๋ Locker ๋ฅผ ํ๋๋ฐ์ ๊ฐ์ ์ ์๋ค . ๊ทธ ๋ฐ๋๋ ๋์ผํ๋ค.
@OneToOne
@JoinColumn(name = "locker_id")
private Locker locker;
์ฃผ ๊ฐ์ฒด๊ฐ ๋์ ๊ฐ์ฒด์ ์ฐธ์กฐ๋ฅผ ๊ฐ์ง๋ ๊ฒ์ฒ๋ผ
์ฃผ ํ ์ด๋ธ์ ์ธ๋ํค๋ฅผ ๋๊ณ ๋์ ํ ์ด๋ธ์ ์ฐพ๋๋ค.
์ฅ์ : ์ฃผํ ์ด๋ธ๋ง ์กฐํํด๋ ๋์ ํ ์ด๋ธ์ ๋ฐ์ดํฐ๊ฐ ์๋์ง ํ์ธ ๊ฐ๋ฅํ๋ค.
๋จ์ : ๊ฐ์ด ์์ผ๋ฉด ์ธ๋ํค์ null์ด ํ์ฉ
๋ค๋๋ค [N:M]
๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค
๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ์ ๊ทํ๋ ํ ์ด๋ธ 2๊ฐ๋ก ๋ค๋๋ค ๊ด๊ณ๋ฅผ ํํํ ์ ์๋ค .
์ฐ๊ฒฐ ํ ์ด๋ธ์ ์ถ๊ฐํด์ ์ผ๋๋ค, ๋ค๋์ผ ๊ด๊ณ๋ก ํ์ด๋ด์ผํ๋ค.
๊ฐ์ฒด
ํ์ง๋ง ๊ฐ์ฒด๋ ์ปฌ๋ ์ ์ ์ฌ์ฉํด์ ๊ฐ์ฒด 2๊ฐ๋ก ๋ค๋๋ค ๊ด๊ณ๊ฐ ๊ฐ๋ฅํ๋ค.
Member ๋ Product ๋ฆฌ์คํธ๋ฅผ ๊ฐ์ ์ ์๊ณ
๋ฐ๋๋ก Product ๋ Member ๋ฆฌ์คํธ๋ฅผ ๊ฐ์ ์ ์๋ค.
@ManyToMany
@JoinTable(name = "member_product")
private List<Product> products = new ArrayList<>();
@ManyToMany ๋ฅผ ์ฌ์ฉํจ
@JoinTable๋ก ์ฐ๊ฒฐ ํ ์ด๋ธ์ ์ง์ ํ๋ค .
๋ค๋๋ค ๋งคํ์ ํ๊ณ
ํธ๋ฆฌํด ๋ณด์ด์ง๋ง ์ค๋ฌด์์ ์ฌ์ฉํ๋ฉด ์๋๋ค .
์ฐ๊ฒฐํ ์ด๋ธ์ด ๋จ์ํ ์ฐ๊ฒฐ๋ง ํ๊ณ ๋๋์ง ์๋๋ค.
์ฃผ๋ฌธ์๊ฐ,์๋ ๊ฐ์ ๋ฐ์ดํฐ๊ฐ ๋ค์ด์ฌ ์ ์๋ค.
์ฐ๊ฒฐํ ์ด๋ธ์ ์ํฐํฐ๋ก ๋ง๋ค๊ณ @OneToMany , @ManyToOne ์ ์ฌ์ฉํ์ !