πŸ”™λ’€λ‘œκ°€κΈ°

ν”ŒλŸ¬μ‹œλž€?

μ˜μ†μ„± μ»¨ν…μŠ€νŠΈμ˜ λ³€κ²½ λ‚΄μš©μ„ λ°μ΄ν„°λ² μ΄μŠ€μ— λ°˜μ˜ν•˜λŠ” 것

ν”ŒλŸ¬μ‹œμ˜ λ°œμƒ

μ˜μ†μ„± μ»¨ν…μŠ€νŠΈλ₯Ό ν”ŒλŸ¬μ‹œν•˜λŠ” 방법

<aside> ⚠️ JPQL 쿼리 μ‹€ν–‰μ‹œ ν”ŒλŸ¬μ‹œκ°€ μžλ™μœΌλ‘œ ν˜ΈμΆœλ˜λŠ” 이유

em.persist(memberA);
em.persist(memberB);
em.persist(memberC);
//쀑간에 JPQL μ‹€ν–‰
query = em.createQuery("select m from Member m", Member.class);
List<Member> members= query.getResultList();

이와 같이 persistκ°€ 있고 commit 이전에 JPQL이 싀행될 경우 아무것도 μ‘°νšŒν•˜μ§€ μ•ŠλŠ” λ¬Έμ œκ°€ 생길 수 μžˆλ‹€. λ”°λΌμ„œ JPQLκ°€ μ‹€ν–‰λ˜λŠ” μ‹œμ μ—μ„œ flushκ°€ λ°œμƒν•œλ‹€.

</aside>

ν”ŒλŸ¬μ‹œ λͺ¨λ“œ μ˜΅μ…˜

em.setFlushMode(FlushModeType.COMMIT)

FlushModeType.AUTO : μ»€λ°‹μ΄λ‚˜ 쿼리λ₯Ό μ‹€ν–‰ν•  λ•Œ ν”ŒλŸ¬μ‹œ (κΈ°λ³Έκ°’) FlushModeType.COMMIT : 컀밋할 λ•Œλ§Œ ν”ŒλŸ¬μ‹œ

<aside> ⚠️ κ·Έλƒ₯ AUTO둜 놓고 μ“°λŠ”κ²Œ μ’‹λ‹€.

</aside>

정리

ν”ŒλŸ¬μ‹œλŠ” μ˜μ†μ„± μ»¨ν…μŠ€νŠΈλ₯Ό λΉ„μš°μ§€ μ•ŠλŠ”λ‹€.

μ˜μ†μ„± μ»¨ν…ŒμŠ€νŠΈμ˜ λ³€κ²½ λ‚΄μš©μ„ λ°μ΄ν„°λ² μ΄μŠ€μ— λ™κΈ°ν™”ν•œλ‹€.

νŠΈλžœμž­μ…˜μ΄λΌλŠ” μž‘μ—… λ‹¨μœ„κ°€ μ€‘μš” β†’ 컀밋 μ§μ „μ—λ§Œ λ™κΈ°ν™”ν•˜λ©΄ λœλ‹€.