김찬진의 개발 블로그
2023.12.21 [flush() 란?]
flush() 는 다음 3가지 경우에 호출된다 1. em.flush() : 직접 호출 2. 트랜잭션 커밋 : 자동 호출 3. JPQL 쿼리 실행 : 자동 호출 flush() 메카니즘은 다음과 같다. 1. flush() 호출 2. 더티 체킹 : 엔티티 매니저 1차 캐시에 저장되어있는 최초 영속 시점의 객체 상태(스냅샷)와 현재 변경한 객체 상태를 비교 3. 객체에 변경사항 있다면 분석하여 쓰기 지연 SQL 저장소에 상응하는 쿼리 저장 4. DB에 쿼리 날리기 flush() 에 대해서 혼돈하지 말 것 1. flush() 는 1차 캐시를 비우는 것이 아니다 2. flush() 는 트랜잭션 단위로 실행되어야 한다
1일1배움/JPA (김영한 님)
2023. 12. 23. 18:13
2023.12.21 [entityManager.find() 는 commit() 전까지 쓰기 지연 SQL 저장소에 쿼리를 저장할까?]
package hellojpa; import javax.persistence.EntityManager; import javax.persistence.EntityManagerFactory; import javax.persistence.EntityTransaction; import javax.persistence.Persistence; public class JpaMain { public static void main(String[] args) { EntityManagerFactory emf = Persistence.createEntityManagerFactory("hello"); // persistence.xml EntityManager em = emf.createEntityManager(); Entity..
1일1배움/JPA (김영한 님)
2023. 12. 23. 17:58