๐ก ํ๋ก์๋
- ํ๋ก์๋ ๋ฌด์์ผ๊น?
- ์๋ฅผ ๋ค์ด ์ฐ๋ฆฌ๊ฐ Member ๋ฅผ ์กฐํํด์ผ ํ ๋ Team ๋ ํจ๊ป ์กฐํํด์ผ ํ ๊น?

- ๊ฐ์ด ๋ก๊ฒจ์์ ๊ฐ์ด ์ฌ์ฉํด์ผ ํ๋ค๋ฉด ์๊ด์์ง๋ง
- ์ฌ์ฉํ์ง ์๋๋ฐ ๋ก๊ฒจ์์ ์ด๋ค๋ ๊ฒ์ ์ต์ ํ๊ฐ ๋์ง ์๋ ๋ค๋ ๊ฒ์ด๋ค.
โ๏ธ ํ๋ก์ ๊ธฐ์ด
- jpa ์์๋ em.getReference( ) ๋ผ๋ ๋ฉ์๋๋ฅผ ์ ๊ณตํ๋ค.
- em.find( ) : ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ํตํด์ ์ค์ ์ํฐํฐ ๊ฐ์ฒด๋ฅผ ์กฐํํ๋ค.
- em.getReference( ) : ๋ฐ์ดํฐ๋ฒ ์ด์ค ์กฐํ๋ฅผ ๋ฏธ๋ฃจ๋ ๊ฐ์ง(ํ๋ก์) ์ํฐํฐ ๊ฐ์ฒด๋ฅผ ์กฐํํ๋ค.
- DB์ ์ฟผ๋ฆฌ๊ฐ ๋๊ฐ์ง ์์ง๋ง, ๊ฐ์ฒด๊ฐ ์กฐํ๋๋ค.


- ๊ป๋ฐ๊ธฐ๋ ๋๊ฐ์ง๋ง ํ ํ ๋น ๊ฒ์ด๊ณ , target ์ ์ง์ง ๋ ํผ๋ฐ์ค๋ฅผ ๊ฐ๋ฆฌํจ๋ค.
โ๏ธ ํ๋ก์ ํน์ง
- ์ค์ ํด๋์ค๋ฅผ ์์๋ฐ์์ ๋ง๋ค์ด์ง๋ค.
- ์ค์ ํด๋์ค์ ๊ฒ ๋ชจ์์ด ๊ฐ๊ธฐ๋๋ฌธ์ ์ฌ์ฉํ๋ ์ ์ฅ์์๋ ์ง์ง์ธ์ง ์๋์ง ๊ตฌ๋ถํ ํ์์์ด ์ฌ์ฉํ๋ฉด ๋๋ค.

- ํ์ด๋ฒ๋ค์ดํธ๊ฐ ํ๋ก์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ฌ ์์๋ฐ์์ ๋ง๋ ๋ค.
- ํ๋ก์ ๊ฐ์ฒด๋ ์ค์ ๊ฐ์ฒด์ ์ฐธ์กฐ(target)์ ๋ณด๊ดํ๋ค.
- ํ๋ก์ ๊ฐ์ฒด๋ฅผ ํธ์ถํ๋ฉด ํ๋ก์ ๊ฐ์ฒด๋ ์ค์ ๊ฐ์ฒด์ ๋ฉ์๋๋ฅผ ํธ์ถํ๋ค.
โ๏ธ ํ๋ก์ ๊ฐ์ฒด์ ์ด๊ธฐํ
Member member = em.getRefernce(Member.class, "id1");
member.getName();

- ํ๋ก์ ๊ฐ์ฒด๋ฅผ ๊ฐ์ง๊ณ ์จ ๋ค์
- member.getName( ) ์ ํธ์ถํ๊ฒ ๋๋ฉด
- ์ฒ์์๋ Member target ์ ๊ฐ์ด ์๊ธฐ ๋๋ฌธ์ JPA ๊ฐ ์์์ฑ ์ปจํ ์คํธ์ ์ง์ง Member ๊ฐ์ฒด๋ฅผ ๊ฐ์ ธ์ค๋ผ๊ณ ์์ฒญํ๋ค.
- ์์์ฑ ์ปจํ ์คํธ๋ DB๋ฅผ ์กฐํํด์ ์ค์ Entity ๊ฐ์ฒด๋ฅผ ์์ฑํด ์ฃผ๊ณ target ๊ณผ ์ง์ง ๊ฐ์ฒด๋ฅผ ์ฐ๊ฒฐ์์ผ์ค๋ค.
- ๊ทธ๋ฆฌ๊ณ ์ง์ง ๊ฐ์ฒด์ getName( ) ์ด ํธ์ถ๋๋ฉด์ ๋ฐํ๋๋ค.
โญ๏ธ ํ๋ก์ ์ค์ ํน์ง โญ๏ธ
- ํ๋ก์ ๊ฐ์ฒด๋ ์ฒ์ ์ฌ์ฉํ ๋ ํ ๋ฒ๋ง ์ด๊ธฐํ ํ๋ค.
- ํ๋ก์ ๊ฐ์ฒด๋ฅผ ์ด๊ธฐํ ํ ๋, ํ๋ก์ ๊ฐ์ฒด๊ฐ ์ค์ ์ํฐํฐ๋ก ๋ฐ๋๋ ๊ฒ์ ์๋๋ค.
- ์ด๊ธฐํ๊ฐ ๋๋ฉด ํ๋ก์ ๊ฐ์ฒด๋ฅผ ํตํด์ ์ค์ ์ํฐํฐ์ ์ ๊ทผ ๊ฐ๋ฅํ๊ฒ ๋๋๊ฒ.
- ํ๋ก์ ๊ฐ์ฒด๋ ์๋ณธ ์ํฐํฐ๋ฅผ ์์๋ฐ๊ธฐ ๋๋ฌธ์ ํ์
์ฒดํฌ์ ์ฃผ์ํด์ผํ๋ค.
- (== ๋น๊ต ์คํจ, ๋์ instance of ์ฌ์ฉ)
- ์์์ฑ ์ปจํ ์คํธ์ ์ฐพ๋ ์ํฐํฐ๊ฐ ์ด๋ฏธ ์์ผ๋ฉด em.getReference( ) ๋ฅผ ํธ์ถํด๋ ์ค์ ์ํฐํฐ๋ฅผ ๋ฐํํ๋ค.
- ์์์ฑ ์ปจํ
์คํธ์ ๋์์ ๋ฐ์ ์ ์๋ ์ค์์ ์ํ์ผ๋, ํ๋ก์๋ฅผ ์ด๊ธฐํํ๊ฒ ๋๋ฉด ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ค.
- ํ์ด๋ฒ๋ค์ดํธ๊ฐ org.hibernate.LazyInitalizationException ์์ธ๋ฅผ ํฐํธ๋ฆฐ๋ค.
- JPA ํ์ค์ ๊ฐ์ ์ด๊ธฐํ๊ฐ ์๋ค.
- ๊ฐ์ ํธ์ถ : member.getName( )
<์๋ฐ ORM ํ์ค JPA ํ๋ก๊ทธ๋๋ฐ - ๊ธฐ๋ณธํธ ์ ์ฐธ๊ณ ํ์ฌ ์์ฑํ์์ต๋๋ค.>
'JPA' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| [Jpa] ์์์ฑ ์ ์ด(CASCADE) ์ ๊ณ ์ ๊ฐ์ฒด (0) | 2023.06.08 |
|---|---|
| [Jpa] ์ฆ์๋ก๋ฉ๊ณผ ์ง์ฐ๋ก๋ฉ (0) | 2023.06.01 |
| [Jpa] ์์๊ด๊ณ ๋งคํ (0) | 2023.05.22 |
| [Jpa] ๋ค๋๋ค [N:N] ์ ๋ํด์ (0) | 2023.05.17 |
| [Jpa] ๋ค๋์ผ[N:1], ์ผ๋๋ค[1:N] ์ ๋ํด์ (0) | 2023.05.09 |