EntityManagerFactory์ EntityManager
Entity Manager Factory
์ํฐํฐ ๋ฉ๋์ ๋ฅผ ๋ง๋๋ ๊ณต์ฅ์ผ๋ก ์ด๋ฅผ ๋ง๋๋ ๋น์ฉ์ ์๋นํ ํฌ๊ธฐ ๋๋ฌธ์ ํ๊ฐ๋ง ๋ง๋ค์ด์ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฒด์์ ๊ณต์ ํ๋๋ก ์ค๊ณ๊ฐ ๋์ด์๋ค.
์ฌ๋ฌ ์ค๋ ๋๊ฐ ๋์์ ์ ๊ทผํด๋ ์์ ํ๋ฏ๋ก ์ค๋ ๋๊ฐ ๊ณต์ ๊ฐ ๊ฐ๋ฅํ๋ค.
JPA ๊ตฌํ์ฒด๋ค์ ์ด Entity Manager Factory๋ฅผ ์์ฑํ ๋ ์ปค๋ฅ์ ํ๋ ์์ฑํ๋ค.
Entity Manager
์ด๋ฆ ๊ทธ๋๋ก ๊ฐ Entity๋ฅผ ๊ด๋ฆฌํ๋ ์ญํ ๋ก ์ด๋ ์ฌ๋ฌ ์ค๋ ๋๊ฐ ๋์์ ์ ๊ทผํ๋ฉด ๋์์ฑ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ฏ๋ก ์ค๋ ๋๊ฐ์ ์ ๋ ๊ณต์ ํ๋ฉด ์๋๋ค.
Persistence context
์์์ฑ ์ปจํ
์คํธ๋ก ์ํฐํฐ๋ฅผ ์๊ตฌ ์ ์ฅํ๋ ํ๊ฒฝ
์ด๋ค.
์ํฐํฐ ๋ฉ๋์ ๋ฅผ ์์ฑํ ๋ ํ๋ ๋ง๋ค์ด์ง๋ฉฐ, ์ฌ๋ฌ ์ํฐํฐ ๋งค๋์ ๊ฐ ๊ฐ์ ์์์ฑ ์ปจํ ์คํธ์ ์ ๊ทผํ ์๋ ์๋ค.
โพ ํน์ง
์์์ฑ ์ปจํ ์คํธ๋ ์ํฐํฐ๋ฅผ
์๋ณ์ ๊ฐ
์ผ๋ก ๊ตฌ๋ถํ๋ค. (์๋ฅผ ๋ค๋ฉด Id)ํธ๋์ญ์ ์
์ปค๋ฐ
ํ๋ ์๊ฐ ์์์ฑ ์ปจํ ์คํธ์ ์ ์ฅ๋ ์ํฐํฐ๋ฅผ DB์ ๋ฐ์ํ๋๋ฐ ์ด๋ฅผflush
๋ผ๊ณ ํ๋ค.์ฅ์
1์ฐจ ์บ์ ๊ธฐ๋ฅ
๋์ผ์ฑ ๋ณด์ฅ
ํธ๋์ญ์ ์ ์ง์ํ๋
์ฐ๊ธฐ ์ง์ฐ
๋ณ๊ฒฝ ๊ฐ์ง
์ง์ฐ ๋ก๋ฉ
โพ Entity์ ์๋ช
์ฃผ๊ธฐ
๋น์์ : ์์์ฑ ์ปจํ ์คํธ์ ๊ด๊ณ ์๋ ์ํ
์์ : ์์์ฑ ์ปจํ ์คํธ์ ์ ์ฅ๋ ์ํ (persist())
์ค์์ : ์์์ฑ ์ปจํ ์คํธ์ ์ ์ฅ๋์๋ค๊ฐ ๋ถ๋ฆฌ๋ ์ํ (detach())
์ญ์ : ์ญ์ ๋ ์ํ (remove())
์กฐํ/์ฝ์
/์ญ์
โพ ์กฐํ
find()
ํจ์๋ฅผ ์ด์ฉํด ์กฐํ๋ฅผ ํ ์ ์๊ณ ๊ฐ์ฅ ๋จผ์ 1์ฐจ ์บ์
์์ ์๋ณ์ ๊ฐ
์ผ๋ก ์ํฐํฐ๋ฅผ ์ฐพ๊ณ ์๋ค๋ฉด DB ์กฐํ์์ด ์กฐํ๊ฐ ๊ฐ๋ฅํ๋ค.
์ด์ฒ๋ผ ์ํฐํฐ๋ ์์์ฑ ์ปจํ
์คํธ์ ์ ์ฅ๋์ด ๊ด๋ฆฌ ๋๊ธฐ ๋๋ฌธ์ ๊ฐ์ ํค์ ์ํฐํฐ๋ฅผ ๋ฐ๋ณต ์กฐํํด๋ ๊ฐ์ ์ธ์คํด์ค๋ฅผ ๋ฐํํ๊ธฐ ๋๋ฌธ์ ๋์ผ์ฑ
์ ๋ณด์ฅํ๋ค.
โพ ์ฝ์
persist()
๊น์ง๋ง ์ํํ๋ฉด DB์ ์ฟผ๋ฆฌ๋ ๋ ๋ฆฌ์ง ์๊ณ ์์์ฑ ์ปจํ
์คํธ์ ๋ชจ์๋๋ค.
commit()
์ ํตํด ์์์ฑ ์ปจํ
์คํธ์ ์ฐ๊ธฐ์ง์ฐ SQL ์ ์ฅ์
์ ๋ชจ์๋ ์ฟผ๋ฆฌ๋ฅผ ๋ ๋ฆฌ๊ฒ ๋๋ค.
์ด์ฒ๋ผ ํ๋ฒ์ ๋ชจ์ ํธ๋์ญ์ ์ ๋ ๋ฆฌ๊ธฐ ๋๋ฌธ์
โพ ์์
๋ณ๋ค๋ฅธ ํจ์ ์์ด Entity์ ํ๋๋ฅผ setter
๋ฅผ ํตํด ๊ฐ์ ์์ ํ๋ฉด ์์์ฑ ์ปจํ
์คํธ์ ๋ณ๊ฒฝ ๊ฐ์ง
๋ฅผ ํตํด ์๋์ผ๋ก update๊ฐ ์ํ๋๋ค.
flush
์์์ฑ ์ปจํ ์คํธ์ ๋ณ๊ฒฝ ๋ด์ฉ์ DB์ ๋ฐ์ํ๋ ๋ฉ์๋์ด๋ค.
ํ์ฌ ์์์ฑ ์ปจํ
์คํธ์ ๋ชจ๋ ์ํฐํฐ๋ฅผ ์ค๋
์ท๊ณผ ๋น๊ตํด์ ์์ ๋ ์ํฐํฐ๋ฅผ ์ฐพ๊ณ ์์ ๋ ์ํฐํฐ์ ๋ง๊ฒ ์ฟผ๋ฆฌ๋ฅผ ๋ง๋ค์ด ์ฐ๊ธฐ ์ง์ฐ SQL์ ์ฅ์
์ ๋ฑ๋กํ๋ค.
๊ทธ ํ, ์ฐ๊ธฐ ์ง์ฐ SQL์ ์ฅ์
์ ์๋ ์ฟผ๋ฆฌ๋ฅผ DB์ ์ ์กํ๋ค.
์์์ฑ ์ปจํ
์คํธ flush๋ฐฉ๋ฒ
์ง์ ํธ์ถ
em.flush()
๋ฅผ ํตํด ์ง์ ํธ์ถํ ์ ์๋ค.
ํธ๋์ญ์ ์ปค๋ฐ ์ ์๋ ํธ์ถ๋๋ค.
JPQL ์ฟผ๋ฆฌ ์คํ ์ ํ๋ฌ์๊ฐ ์๋ ํธ์ถ ๋๋ค.
Last updated