플러시

현시기얌·2021년 11월 24일
0

JPA

목록 보기
4/14

Flush (플러시)

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

플러시가 발생하면?

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

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

  • em.flush() : 직접 호출
  • 트랜잭션 커밋 : 플러시 자동 호출
  • JPQL 쿼리 실행 : 플러시 자동 호출

Q) 플러시가 발생하면 1차 캐시가 지워질까?

아니다.
플러시는 1차 캐시가 지워지는 것이 아니라 변경을 감지하고
변경된 엔티티를 쓰기 지연 SQL 저장소에 등록하는 데이터베이스에 반영 시키는 역할을 한다.

플러시 모드 옵션

em.setFlushMode()

FlushModeType.AUTO : 커밋이나 쿼리를 실행할 때 플러시 (기본값)
FlushModeType.COMMIT : 커밋할 때만 플러시

정리

  • 플러시는 영속성 컨텍스트를 비우지 않는다.
  • 영속성 컨텍스트의 변경 내용을 데이터베이스에 동기화한다.
  • 트랜잭션이라는 작업 단위가 중요하다 -> 커밋 직전에만 동기화 하면 된다.
profile
현시깁니다

0개의 댓글