- ์ค์ ์ํฐํฐ๋ฅผ ์์๋ฐ์ ๋ง๋ค์ด์ง(๋ฐ๋ผ์ ๊ฒ๋ชจ์์ด ๊ฐ๋ค)
- ํ๋ก์ ๊ฐ์ฒด๋ ์ค์ ๊ฐ์ฒด์ ์ฐธ์กฐ(target)์ ๋ณด๊ด
- ํ๋ก์ ๊ฐ์ฒด๋ฅผ ํธ์ถํ๋ฉด ํ๋ก์ ๊ฐ์ฒด๋ ์ค์ ๊ฐ์ฒด์ ๋ฉ์๋ ํธ์ถ
** ํ๋ก์ ๊ฐ์ฒด๋ ์๋ณธ ์ํฐํฐ๋ฅผ ์์๋ฐ์ . ํ๋ก์ ๊ฐ์ฒด๋ฅผ ์ด๊ธฐํํ ๋, ํ๋ก์ ๊ฐ์ฒด๊ฐ ์ค์ ์ํฐํฐ๋ก ๋ฐ๋๋ ๊ฒ์ ์๋.
์ด๊ธฐํ๋๋ฉด ํ๋ก์ ๊ฐ์ฒด๋ฅผ ํตํด์ ์ค์ ์ํฐํฐ์ ์ ๊ทผ ๊ฐ๋ฅ
์์์ฑ ์ปจํ ์คํธ์ ์ฐพ๋ ์ํฐํฐ๊ฐ ์ด๋ฏธ ์์ผ๋ฉด em.getReference() ํธ์ถํด๋ ์ค์ ์ํฐํฐ ๋ฐํ
Member findMember = em.getReference(Member.class, member); //๋น ๊ป๋ฐ๊ธฐ(ํ๋ก์)
//getUsername()์์ ์ค์ ์ฟผ๋ฆฌ ์คํ -> ํ๋ก์ ์ด๊ธฐํ
System.out.println("findMember.username=" + findMember.getUsername());
System.out.println("findMember.username=" + findMember.getUsername());
์ง์ฐ๋ก๋ฉ (fetch = FetchType.LAZY)
-> ์ง์ฐ๋ก๋ฉ์ผ๋ก ์ค์ ์ em.find()ํ ๊ฒฝ์ฐ ์ฐ๊ด๋ ๊ฐ์ฒด๋ฅผ ํ๋ก์๋ก ๊ฐ์ ธ์จ๋ค.
-> member ์ฟผ๋ฆฌ ๋ฐ๋ก select~, team ํ์ํ ์์ ์ team ์ฟผ๋ฆฌ ๋ฐ๋ก select ~
์ค์ team์ ์ฌ์ฉํ๋ ์์ ์ ์ด๊ธฐํ ๋ฐ DB ์ฟผ๋ฆฌ์คํ (Ex) team.getName();)
์ฆ์๋ก๋ฉ(fetch=FetchType.EAGER)
-> Member์ Team์ ๊ณ์ ๊ฐ์ด ์ฌ์ฉํ๋ค๋ฉด ์ด๋ ๊ฒ ๋ฐ๋ก ๋ก๋ฉํ์ฌ ์กฐ์ธํด์ ํจ๊ป ๊ฐ์ ธ์ค๋ ๊ฒ์ด ์ ๋ฆฌ
-> ํ๋ฒ์ joinํด์ ๊ฐ์ ธ์ค๊ธฐ ๋๋ฌธ์ member์ ๋ง๋ Team ์ฟผ๋ฆฌ๊ฐ ํจ๊ป ์๋ฉ ๋๊ฐ๋ค.
๊ฐ๊ธ์ ์ง์ฐ๋ก๋ฉ๋ง ์ฌ์ฉ!!! why? ์ฐ๊ด๋ ์ํฐํฐ๋ฅผ ์ ๋ถ ๋์ด์ค๋ฏ๋ก ์์์น ๋ชปํ SQL ๋ฐ์
๋ฐ๋ผ์ ์ผ๋จ ์ ๋ถ ์ง์ฐ ๋ก๋ฉ ์ ์ฉํ ํ, Member์ Team ๊ฐ์ด ๊ฐ์ ธ์์ผ ํ๋ ๊ฒฝ์ฐ Fetch JOIN ์ฌ์ฉ
'BACKEND > Spring' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
์๋ฒ ๋๋ ํ์ ์ฌ์ฉ๋ฐฉ๋ฒ (0) | 2022.01.18 |
---|---|
SpringBoot JPA CASCADE ์์ (0) | 2022.01.17 |
์์๊ด๊ณ ๋งคํ + ๊ณ ๊ธ ๋งคํ (0) | 2022.01.15 |
pk ์ฌ์ฉ ์ ๋ต (0) | 2022.01.13 |
JPA ์์์ฑ (0) | 2022.01.13 |