Flush

HakJun·2022년 10월 5일
1

Spring-JPA

목록 보기
5/7

Flush 에 관해 공부하였다.

1.Flush 발생이란

  • 변경을 감지하고
  • 수정된 엔티티를 쓰기 지연 SQL저장소에 등록한 후.
  • 쓰기 지연 SQL저장소의 쿼리를 데이터베이스에 전송하는 것이다.

2.영속성 컨텍스트를 Flush하는 방법

  • em.flush()로 직접 호출 가능하다.

  • 트랜잭션을 커밋하면 flush가 자동 호출된다.

  • 커밋전에 flush호출로 쿼리가 실행된것을 확인할 수 있다.

  • persist로는 실제 데이터베이스에 저장되지 않는다. 그 후 바로 JPQL을 실행하면 기존의 원리로는 DB에서 조회되지 않는다. 그래서 JPQL을 실행할때 이전의 SQL저장소 내용들을 강제로 FLUSH한 후 쿼리를 실행한다. 그래서 조회된다.

4. 플러시 모드 옵션

  • em.setFlushMode(FlushModeType.COMMIT)
  • FlushModeType.AUTO
    커밋이나 쿼리를 실행할 때 플러시 (기본값, 권장된다.)
  • FlushModeType.COMMIT
    커밋할 때만 플러시

5. Flush는

  • 영속성 컨텍스트를 비우는 것이 아니다.
  • 영속성 컨텍스트의 변경내용을 DB에 동기화하는 것이다.
  • 동작할수 있는 이유는 트랜잭션이라는 작업단위가 있기 때문이다.
profile
백엔드 & 전공 공부

0개의 댓글