์์์ฑ ์ปจํ ์คํธ
JPA์์ ๊ฐ์ฅ ์ค์ํ 2๊ฐ์ง๋ฅผ ๊ผฝ์๋ณด๋ฉด
1. ๊ฐ์ฒด์ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋งคํ(ORM)
2. ์์์ฑ ์ปจํ ์คํธ
์ด๊ทธ๋ฆผ์ ์ค๋ช ํ๋ฉด
์์ฒญ์ด ์ฌ ๋๋ง๋ค EntityManagerFactory๋ฅผ ํตํด EntityManager๋ฅผ ์์ฑํ๊ณ , EntityManager๋ ๋ด๋ถ์ ์ผ๋ก DB ์ปค๋ฅ์ ์ ํตํด DB๋ฅผ ์ฌ์ฉํ๋ค.
์์์ฑ ์ปจํ ์คํธ? "์๊ตฌ ์์ฑ ์ ์ฅ" ์ธ๊ฐ?
๋ง๋ค.
"์ํฐํฐ๋ฅผ ์๊ตฌ ์ ์ฅํ๋ ํ๊ฒฝ"์ด๋ผ๋ ๋ฏ์ด๋ค. ์์์ฑ ์ปจํ ์คํธ๋ ๋ ผ๋ฆฌ์ ์ธ ๊ฐ๋ ์ผ๋ก ๋์ ๋ณด์ด์ง๋ ์๋๋ค. EntityManager๋ฅผ ํตํด์ ์์์ฑ ์ปจํ ์คํธ์ ์ ๊ทผ ๊ฐ๋ฅํ๋ค.
EntityManager.persist(entity);
//Entity๋ฅผ DB์ ์ ์ฅํ๋ ์ฝ๋. Entity๋ฅผ ์์์ฑ ์ปจํ
์คํธ์ ์ ์ฅํ๋ ๊ฒ์ด๋ค.
์ํฐํฐ ์๋ช ์ฃผ๊ธฐ
์ํฐํฐ์ ์๋ช ์ฃผ๊ธฐ๋ 4๊ฐ์ง๋ก ๋๋๋ค.
- ๋น์์(new / transient) - ์์์ฑ ์ปจํ ์คํธ์ ๊ด๋ จ ์๋ ์๋ก์ด ์ํ
- ์์(managed) - ์์์ฑ ์ปจํ ์คํธ์ ๊ด๋ฆฌ๋๋ ์ํ
์ฆ, persist ํ ์ํ๋ฅผ ๋งํ๋ค.
๊ฐ์ฒด๋ฅผ ์์ฑํ๊ณ EntityManager๋ฅผ ๊ฐ์ ธ์์ persist๋ก ๊ฐ์ฒด๋ฅผ ๋ฃ๋๋ค. EntityManager์ ์์์ฑ ์ปจํ ์คํธ์ ๊ฐ์ฒด๊ฐ ๋ค์ด๊ฐ๋ฉฐ ์์ ์ํ๊ฐ ๋๋ค. ์์ง์ DB์ ์ฟผ๋ฆฌ๊ฐ ๋ ์๊ฐ๋๊ฒ ์๋๋ค.
- ์ค์์(detached) - ์์์ฑ ์ปจํ ์คํธ์ ์ ์ฅ๋์ด์๋ค๊ฐ ๋ถ๋ฆฌ๋ ์ํ
- ์ญ์ (removed) - ์ญ์ ๋ ์ํ
๋น์์์ ๊ฐ์ฒด๋ฅผ ์์ฑํ ์ํ์ด๋ค. ์ฆ, ์์ ์ปจํ ์คํธ์ ์์ง ์ฌ๋ผ๊ฐ์ง ์๋๋ค?
์ฌ๊ธฐ์ persist()๋ฅผ ํ๋ค๋ฉด ๊ฐ์ฒด๋ฅผ ์ ์ฅํ ์ํ์ธ ์์์ด ๋๋ค.
์ค์์์ ์ํฐํฐ๋ฅผ ์์์ฑ ์ปจํ ์คํธ์์ ๋ถ๋ฆฌํ ์ํ์ด๋ฉฐ
์ญ์ ๋ ๋ง๊ทธ๋๋ก ๊ฐ์ฒด๋ฅด ์ญ์ ํ ์ํ์ด๋ค.
๊ทธ๋ผ ์์์ฑ ์ปจํ ์คํธ์ ์ด์ ์ ๋ญ๊ฐ ์์๊น?
1. 1์ฐจ ์บ์
2. ๋์ผ์ฑ ๋ณด์ฅ - 1์ฐจ ์บ์๋ก ๋ฐ๋ณต ๊ฐ๋ฅํ ์ฝ๊ธฐ ๋ฑ๊ธ์ ํธ๋์ญ์ ๊ฒฉ๋ฆฌ ์์ค์ ์ ํ๋ฆฌ์ผ์ด์ ์ฐจ์์์ ์ ๊ณตํ๋ค.
3. ํธ๋์ญ์ ์ ์ง์ํ๋ ์ฐ๊ธฐ ์ง์ฐ - ์ปค๋ฐํ๋ ์๊ฐ์ด ๋์ด์์ผ DB์ Insert SQL์ ๋ณด๋ธ๋ค.
4. ๋ณ๊ฒฝ ๊ฐ์ง(Dirty Checking) - flush()๋ก ์ํฐํฐ์ ์ค๋ ์ท์ ๋น๊ตํ๋ค.
5. ์ง์ฐ ๋ก๋ฉ(Lazy Loading)
'๐ผ๋ฐฑ์ค๋ > Spring' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
jasypt๋ฅผ ํตํ ์ํธํ (0) | 2024.02.19 |
---|---|
JPQL, JPA (1) | 2023.12.22 |
JPA๋? (0) | 2023.12.22 |
์๋ฐ ๋น๋ ํจํด์ด๋? (2) | 2023.12.20 |
@ControllerAdvicem, @RestControllerAdvice (0) | 2023.12.20 |