본문 바로가기
Data Base/JPA

[JPA] : Flush(), 플러시에 대해서..

by 오주현 2022. 3. 23.
반응형
  • 플러시, flush 간단 설명
    • 영속성 컨텍스트의 변경 내용을 데이터베이스에 반영
    • 변경 사항과 데이터베이스를 맞추는 것으로 쿼리를 날려주는 것이라고 보면 된다.
    •  
  • 플러시가 발생하면 어떻게 되나?
    • 변경 감지가 일어나고 수정된 엔티티가 쓰기 지연 SQL 저장소에 등록한다. 쓰기 지연 SQL 저장소의 쿼리를 데이터베이스에 전송한다. ( 등록, 수정, 삭제 쿼리 등)
    • 플러시가 발생된다고 Commit 되는 것은 아니다.
    •  
  • 영속성 컨텍스트를 어떻게 플러시하나?
    • em.flush() 직접 호출한다.
    • 트랜잭션을 커밋하면 자동으로 호출된다.
      • 플러시를 실행해도 1차 캐시가 지워지지는 않고 쓰기 지연 SQL 저장소에 있는 것들이 데이터베이스에 반영이 되는 과정이다.데이터베이스에 쿼리가 즉시 나가고 그 다음에 Commit된다.
      • Member member = new Member((200L, "member200"); em.persist(member); em.flush(); //강제로 호출한다. tx.commit();
    • JPQL 쿼리를 실행하면 자동으로 호출된다.
    •  
  • 플러시 모드 옵션도 있다.
    • em.setFlushMode(FlushModeType.COMMIT) 형식으로 사용한다.
      • FlushModeType.AUTO는 커밋이나 쿼리를 실행할 때 플러시가 일어난다.
        • AUTO로 사용하는 것을 권장한다.
      • FlushModeType.COMMIT
        • 커밋할 때만 플러시가 일어난다. 쿼리를 실행할 때는 일어나지 않는다.
        •  
  • 플러시 추가 설명
    • 플러시는 영속성 컨텍스트를 비우지 않고 변경 내용을 데이터베이스에 동기화 하는 것이다.
    • 트랜잭션 단위가 중요한데 커밋 직전에만 동기화를 하면 된다.

자바 ORM 표준 JPA 프로그래밍 - 기본편을 참고하여 공부하였습니다.

반응형

'Data Base > JPA' 카테고리의 다른 글

[JPA] : 엔티티 매핑과 매핑 종류  (0) 2022.03.23
[JPA] : 준영속 상태  (0) 2022.03.23
[JPA] : JPA 영속성 컨텍스트(2)  (0) 2022.03.22
[JPA] : 영속성 컨텍스트(1)  (0) 2022.03.21
[JPA] : JPA 간단 개발과 JPQL 확인하기  (0) 2022.03.20

댓글