JPA์์ ๊ฐ์ฅ ์ค์ํ 2๊ฐ์ง
- ๊ฐ์ฒด์ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋งคํํ๊ธฐ
- ์์์ฑ ์ปจํ ์คํธ
์์์ฑ ์ปจํ ์คํธ๊ฐ ๋ญ๊น?
JPA๋ฅผ ์ดํดํ๋๋ฐ ๊ฐ์ฅ ์ค์ํ ์ฉ์ด์ด๋ค. "์ํฐํฐ๋ฅผ ์๊ตฌ ์ ์ฅํ๋ ํ๊ฒฝ"์ด๋ผ๋ ๋ป. -> EntityManager.persist(entity);
- persist๋ ์ฌ์ค DB์ ์ ์ฅํ๋๊ฒ ์๋๊ณ Entity๋ฅผ ์์์ฑ ์ปจํ ์คํธ์ ์ ์ฅํ๋ค๋ ๋ป์ด๋ค.
- ๋ ผ๋ฆฌ์ ์ธ ๊ฐ๋ ์ผ๋ก ๋์ ๋ณด์ด์ง ์๋๋ค. EntityManager๋ฅผ ํตํด์ ์์์ฑ ์ปจํ ์คํธ์ ์ ๊ทผํ๋ค.
- ์ฌ๋ฌ๊ฐ์ EntityManager๊ฐ ํ๋์ ์์์ฑ ์ปจํ ์คํธ๋ฅผ ๋ฐ๋ผ๋ณธ๋ค.
์ํฐํฐ์ ์๋ช ์ฃผ๊ธฐ๋ ์ด๋ป๊ฒ ๋ ๊น?
๋น์์
- ์์์ฑ ์ปจํ ์คํธ์ ์ ํ ๊ด๊ณ๊ณผ ์๋ ์๋ก์ด ์ํ
์์
- ์์์ฑ ์ปจํ ์คํธ์ ๊ด๋ฆฌ๋๋ ์ํ
์ค์์
- ์์์ฑ ์ปจํ ์คํธ์ ์ ์ฅ๋์๋ค๊ฐ ๋ถ๋ฆฌ๋ ์ํ
์ญ์
- ์ญ์ ๋ ์ํ
//๊ฐ์ฒด๋ฅผ ์์ฑํ ์ํ(๋น์์)
Member member = new Member();
member.setId("member1");
member.setUsername("์ ์ ");
EntityManager em = emf.createEntityManager();
em.getTransaction().begin();
//๊ฐ์ฒด๋ฅผ ์ ์ฅํ ์ํ(์์)
em.persist(member);
persist๋ฅผ ํ๋ค๊ณ ํด์ DB์ ์ฟผ๋ฆฌ๊ฐ ๋ ๋ผ๊ฐ๋๊ฒ ์๋๊ณ . ํธ๋ ์ ์ ์ ์ปค๋ฐํ๋์๊ฐ์ ๋ ๋ผ๊ฐ๋ค.
์์ด๋ฐ ์ด์ํ ๋ฉ์ปค๋์ฆ์ ์ฌ์ฉํ ๊น?
์์์ฑ ์ปจํ ์คํธ๋ฅผ ์ด์ฉํด ์๋์ ๊ฐ์ ์ด์ ์ ๋๋ฆฐ๋ค.
- 1์ฐจ ์บ์
์กฐํ๊ธฐ๋ฅ์ด ์คํ๋์์ ๋ 1์ฐจ ์บ์์์ ๋จผ์ ์กฐํํ๋ค. -> ์์ผ๋ฉด DB์์ ์กฐํ -> 1์ฐจ ์บ์์ ์ ์ฅ
์ฟผ๋ฆฌ๋ฅผ ์ ์ฅํ๋๊ฒ ์๋๊ณ ํด๋น ๊ฐ์ฒด๋ฅผ ์ ์ฅ ์ฆ ๊ฐ์ฒด ์ ์ฅํ๋ค (1์ฐจ ์บ์์ ์ ์ฅ)-> ๋ฐ๋ก ์กฐํํ๋ค(1์ฐจ ์บ์์์ ์กฐํ)
- ๋์ผ์ฑ ๋ณด์ฅ
1์ฐจ ์บ์๋ก ๋ฐ๋ณต ๊ฐ๋ฅํ ์ฝ๊ธฐ ๋ฑ๊ธ์ ํธ๋์ญ์ ๊ฒฉ๋ฆฌ ์์ค์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ์๋ ์ ํ๋ฆฌ์ผ์ด์ ์ฐจ์์์ ์ ๊ณตํ๋ค.
1์ฐจ ์บ์๊ฐ ์์์ผ๋ก ์ธํด ๊ฐ๋ฅํ๋ค.
- ํธ๋์ญ์ ์ ์ง์ํ๋ ์ฐ๊ธฐ ์ง์ฐ
์์ ์ปจํ ์คํธ ์์๋ 1์ฐจ์บ์, ์ฐ๊ธฐ ์ง์ฐ SQL ์ ์ฅ์๊ฐ ์๋ค
persist๊ฐ ๋๋ ์๊ฐ 1์ฐจ์บ์์ ๊ฐ์ฒด๋ฅผ ์ ์ฅํ๊ณ , ์ฐ๊ธฐ ์ง์ฐ SQL ์ ์ฅ์์ ์ฟผ๋ฆฌ๋ฅผ ์ ์ฅํ๋ค.
-> transaction.commit(); ์ ํ๋ ์๊ฐ ์ฐ๊ธฐ ์ง์ฐ SQL ์ ์ฅ์ ์์ flush๋ฅผ ํ์ฌ DB๋ก ์ฟผ๋ฆฌ๋ฅผ ๋ ๋ฆฐ๋ค.
- ๋ณ๊ฒฝ ๊ฐ์ง
1. ์ํฐํฐ์ ์คํญ์ท ๋น๊ตํ๋ค. -> ์ด ๋ ๋ณ๊ฒฝ์ ๊ฐ์งํ๋ค.
2. UPDATE SQL ์์ฑ ํ์ฌ ์ฐ๊ธฐ ์ง์ฐ SQL ์ ์ฅ์์ ์ ์ฅ
- ์ง์ฐ ๋ก๋ฉ
ํ๋ฌ์
์์์ฑ ์ปจํ ์คํธ์ ๋ณ๊ฒฝ๋ด์ฉ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ฐ์
์์์ฑ ์ปจํ ์คํธ๋ฅผ ๋น์ฐ์ง ์๋๋ค.
ํธ๋์ญ์ ์ด๋ผ๋ ์์ ๋จ์๊ฐ ์ค์ - ์ปค๋ฐ ์ง์ ์๋ง ๋๊ธฐํ ํ๋ฉด ๋จ
ํ๋ฌ์๊ฐ ๋ฐ์ํ๋ฉด ๋ฌด์จ์ผ์ด ์๊ธธ๊น?
- ๋ณ๊ฒฝ ๊ฐ์ง
- ์์ ๋ ์ํฐํฐ ์ฐ๊ธฐ ์ง์ฐ SQL ์ ์ฅ์์ ๋ฑ๋ก
- ํธ๋ ์ ์ ์ปค๋ฐ์ด ๋๋ฉด ์ฐ๊ธฐ ์ง์ฐ SQL ์ ์ฅ์์ ์ฟผ๋ฆฌ๋ฅผ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ก
์ด๋ป๊ฒ ์ฌ์ฉํ๋?
em.flush() - ์ง์ ํธ์ถ
ํธ๋์ญ์ ์ปค๋ฐ - ํ๋ฌ์ ์๋ ํธ์ถ
JPQL ์ฟผ๋ฆฌ ์คํ - ํ๋ฌ์ ์๋ ํธ์ถ
- ์๋์ ๊ฐ์ด persist๋ฅผ ํ๊ณ ํ๋ฌ์๊ฐ ๋์ง ์๋ ์ํ์์ JPQL์ด ์คํ๋๋ฉด ์กฐํ๊ฐ ์๋๋๊น(DB์ ๋ฐ์์ด ์๋์)
์ด๋ฌํ ๋ฌธ์ ์ ๋๋ฌธ์ JPA ์ฟผ๋ฆฌ๊ฐ ์คํ๋ ๋ ์๋์ผ๋ก ํ๋ฌ์๋ฅผ ํธ์ถํ๋ค.
์ค์์ ์ํ
์์ -> ์ค์์
์์ ์ํ์ ์ํฐํฐ๊ฐ ์์์ฑ ์ปจํ ์คํธ์์ ๋ถ๋ฆฌํ๋ค.
์์์ฑ ์ปจํ ์คํธ๊ฐ ์ ๊ณตํ๋ ๊ธฐ๋ฅ์ ์ฌ์ฉ ๋ชปํ๋ค.
์ด๋ป๊ฒ ์ฌ์ฉํ ๊น?
em.datach(entity) -> ํน์ ์ํฐํฐ๋ง ์ค์์ ์ํ๋ก ์ ํ
em.clear() -> EntityManager ์์ ์๋ ์์์ฑ ์ปจํ ์คํธ๋ฅผ ๋ชจ๋ ์ง์ด๋ค. (์ด๊ธฐํ)
em.close() -> ์์์ฑ ์ปจํ ์คํธ๋ฅผ ์ข ๋ฃํ๋ค.
'๐ WEB > JPA' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
4. ์๋ฐ ORM ํ์ค JPA ํ๋ก๊ทธ๋๋ฐ - ์ฐ๊ด๊ด๊ณ (0) | 2021.05.14 |
---|---|
3. ์๋ฐ ORM ํ์ค JPA ํ๋ก๊ทธ๋๋ฐ - ์ํฐํฐ ๋งคํ (0) | 2021.05.13 |
1. ์๋ฐ ORM ํ์ค JPA ํ๋ก๊ทธ๋๋ฐ - ๊ฐ๋จํ ์ค์ต (0) | 2021.05.13 |
0. ์๋ฐ ORM ํ์ค JPA ํ๋ก๊ทธ๋๋ฐ - ๊ธฐ๋ณธํธ (0) | 2021.05.11 |
JPA Pageable ์ฌ์ฉํ๊ธฐ (0) | 2021.02.03 |