본문 바로가기

웹개발/Spring

[JPA] 플러시란? Flush

반응형
플러시란?

영속성 컨텍스트의 변경 내용을 데이터베이스에 반영 (쿼리를 날려주는 것)

  • 영속성 컨텍스트를 비우지 않음
  • 영속성 컨텍스트의 변경내용을 데이터베이스에 동기화
  • (트랜잭션이라는 작업 단위가 중요) commit 직전에만 동기화 하면 된다. 

 

 

플러시 발생

커밋이나 쿼리를 실행할 때 플러시가 된다. (FlushModeType.AUTO 기본값

  1. 변경 감지가 일어남
  2. 수정된 엔티티 쓰기 지연 SQL 저장소에 등록 
  3. 쓰기 지연 SQL 저장소의 쿼리를 데이터베이스에 전송 (등록, 수정, 삭제 쿼리)

 

 

영속성 컨텍스트를 플러시하는 방법
  • em.flush() - 직접 호출 (쓸일 없음)
  • transaction.commit() - 플러시 자동 호출
  • JPQL 쿼리 실행 - 플러시 자동 호출

 

 

참조 - 자바 ORM 표준 JPA 프로그래밍

반응형