Server/Java & Spring
JPA ์์์ฑ ์ปจํ ์คํธ๋?
thals0
2023. 6. 1. 20:37
728x90
์์์ฑ ์ปจํ ์คํธ ์ด์
1. 1์ฐจ ์บ์ ์กฐํ
- JPA๋ DB๋ฅผ ์ง์ ์กฐํํ๋ ๊ฒ์ด ์๋๋ผ 1์ฐจ ์บ์, ์ฆ ์์์ฑ ์ปจํ
์คํธ๋ฅผ ์ฐ์ ์ ์ผ๋ก ์กฐํํ๋ค.
๋ฐ๋ผ์ DB์ I/O ๋ถ๋ด์ด ์ ๊ฒ ๋ฐ์ํ์ฌ ์ฑ๋ฅ์ ์ด์ ์ด ์๋ค๋ ๊ฒ์ด JPA์ ์ฅ์ ์ด๋ผ ํ ์ ์๋ค.
๊ธฐ๋ณธ์ ์ผ๋ก JPA๋ Entity์ PK๋ฅผ ์ด์ฉํ์ฌ ์๋ณ์ ํ๊ฒ ๋๋ฉฐ, 1์ฐจ ์บ์์๋ ๊ณ ์ ์๋ณ์ ๊ฐ์ผ๋ก ์ํฐํฐ๋ฅผ ์ ์ฅํ๊ณ ์๋ค. - JPA์ findById() ๋ฉ์๋๋ฅผ ํธ์ถํ๊ฒ ๋๋ฉด
์ฐ์ , 1์ฐจ ์บ์์์ ์๋ณ์ ๊ฐ์ผ๋ก ์ ์ฅ๋ Entity๋ฅผ ์ฐพ๊ณ 1์ฐจ ์บ์์ ์กด์ฌํ๋ฉด ํด๋น ๊ฐ์ฒด๋ฅผ ๋ฆฌํด, ์กด์ฌํ์ง ์๋๋ค๋ฉด DB์ ์ง์ ์กฐํํด 1์ฐจ ์บ์์ ์ ์ฌํ ํ ํด๋น ๊ฐ์ฒด๋ฅผ ๋ฆฌํดํ๋ค.
2. ๋์ผ์ฑ ๋ณด์ฅ
3. ํธ๋์ญ์ ์ ์ง์ํ๋ ์ฐ๊ธฐ ์ง์ฐ
4. ๋ณ๊ฒฝ ๊ฐ์ง(Dirty Checking)
- JPA๋ Entity์ Update๋ฅผ ๋ํฐ ์ฒดํน ๋ฐฉ์์ผ๋ก ์ ๊ณตํ๊ณ ์๋ค.
๋ํฐ ์ฒดํน์ด๋ Entity์ ๋ณ๊ฒฝ ๊ฐ์ง๋ฅผ ๋งํ๋ค. JPA๊ฐ ํธ๋์ญ์ ์ด ์ข ๋ฃ๋๋ ์์ ์ Entity์ ๋ณ๊ฒฝ๋ ๊ฐ์ ํ์ธํ๊ณ update๋ฅผ ๋ฌธ์ DB์ ์๋์ผ๋ก ๋ฐ์ํ๋ค.
๋ฐ๋ผ์ ๊ฐ๋ฐ์๊ฐ ๋ช ์์ ์ผ๋ก Entity๋ฅผ update๋ฅผ ํ๋ ๊ฒ์ด ์๋๋ผ JPA Engine์๊ฒ ์ผ์ํ๋ ๊ฒ์ด๋ค. - ์ฌ๊ธฐ์ JPA๋ 1์ฐจ ์บ์์์ ์ค๋
์ท(Snapshot)์ ์ฌ์ฉํ๋ค.
JPA๋ Entity๋ฅผ ์กฐํํ์ฌ 1์ฐจ ์บ์์ ์ค๋ ์ท์ ์์ฑํ๋ค. ์ดํ ํธ๋์ญ์ ์ด ๋๋๋ ์์ ์ ์กฐํํ ์ํฐํฐ ๊ฐ์ฒด์ ์ค๋ ์ท์ ๋น๊ตํ์ฌ ๋ณ๊ฒฝ๋ ๊ฐ๋ง Update๋ฅผ ๋ฐ์ํ๋ค. - ์ด๋ ์ค๋ ์ท์ผ๋ก ๊ด๋ฆฌ๋๋ ค๋ฉด ์ํฐํฐ์ ์ํ๋ ์์ ์ํ์ฌ์ผ ํ๋ค. ๋ํ Trasaction์ด readOnly ๋ชจ๋์ผ ๊ฒฝ์ฐ ์ค๋ ์ท์ ์์ฑ๋์ง ์์ผ๋ฏ๋ก ๋ณ๊ฒฝ ๊ฐ์ง๋ ๋์ํ์ง ์๋๋ค.
5. ์ง์ฐ๋ก๋ฉ(Lazy Loading)
Reference
728x90