Spring Data JPA

JPA(Java Persistence API) - 플러시

여행하는 개발자(SOO) 2024. 6. 1. 09:00
728x90

플러시란?

영속성 컨텍스트의 변경내용을 데이터베이스에 반영

 

영속성 컨텍스트의 쓰기 지연 SQL 저장소에 있던 SQL을 데이터베이스에 반영

데이터 베이스 트랜잭션이 commit되면 자동적으로 flush()가 발동한다.

그렇다면 flush()가 발동하면 어떤 일이 일어날까?

  • 변경감지
  • 수정된 엔티티 쓰기 지연 SQL 저장소에 등록
  • 쓰기 지연 SQL 저장소의 쿼릴르 데이터베이스에 전송(등록, 수정, 삭제 쿼리)

영속성 컨텍스트 플러시하는 방법

  • em.flush() - 직접 호출(거의 사용할 일이 없다)
  • 트랜잭션 커밋 - 플러시 자동 호출
  • JPQL 쿼리 실행 - 플러시 자동 호출

em.flush()

em.persist()해도 DB에 쿼리가 날라가지 않는다 하지만 먼저 SQL을 보고싶은 경우에 사용 가능

Member member = new Member();

//영속성 컨텍스트가 관리 시작 INSERT SQL이 쓰기 지연 SQL 저장소에 등록
em.persist(member); 

em.flush(); // 쓰기 지연 SQL 저장소에 있는 INSERT SQL을 DB에 날린다.
728x90