플러시

길셔·2022년 8월 29일
0

JPA

목록 보기
4/7

1. 플러시란,

  • 커밋 시 영속성 컨텍스트에 있는 내용을 변경감지한 후에 DB에 반영하는 것
  • 동작하는 과정 :
    • 수정된 엔티티 쓰기 지연 SQL 저장소에 등록 -> 쓰기 지연 SQL 저장소의 쿼리를 DB에 전송(등록, 수정, 삭제 쿼리)

2. 사용

  • em.flush() : 직접호출

    • COMMIT 전에 DB적용을 원할 시 사용 (근데 사용할 일 거의 없음)
  • 트랜잭션 커밋 : 플러시 자동 호출

    • 트랜잭션 커밋할 때 자동으로 flush 적용(보통의 사용)
  • JPQL 쿼리 실행 : 플러시 자동 호출

    • JPQL은 직접 쿼리를 작성해서 넣기 때문에 실행될 때 쓰기 지연에 있는 내용이 모두 플러시 된다.

    • em.setFlushMode(FlushModeType.COMMIT)

      • flushmodetype.AUTO : 커밋, 쿼리를 실행할 때 플러시( 기본값이라 따로 설정할거 X)
      • FlushModeType.COMMIT. : 커밋할 때만 플러시
      • JPQL 작성 시 flush가 자동 호출되는 것이 싫다면 위와 같은 속성도 적용할 수 있지만 권장하지 않고 그냥 설정없이 기본속성으로 사용하자!)

3. 정리

  • 플러시는 영속성 컨텍스트를 비우는 것이 아니다.
  • 영속성 컨텍스트의 변경 내용을 데이터베이스에 동기화 하는 것이다.
    • (= 쓰기 지연 SQL 저장소에 있는 것을 반영할 뿐)
  • 트랜잭션이라는 작업 단위가 중요할 때는 커밋 직전에만 동기화 하면된다.
profile
까먹지말자

0개의 댓글