hoondev

[Spring JPA] 플러시 본문

Spring JPA

[Spring JPA] 플러시

hoondev3 2023. 1. 17. 18:46

플러시

플러시는 영속성 컨텍스트의 변경내용을 DB에 동기화하는 작업이다.

플러시가 일어나면 더티 체킹(변경 감지), 수정된 엔티티를 쓰기 지연 SQL 저장소에 저장 후 DB에 쿼리 전송 같은 작업이 일어난다.

 

플러시 하는 방법

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

 

JPQL 쿼리 실행 시 플러시가 자동으로 호출되는 이유

영속성 컨텍스트에 있지만 플러시는 되지 않은 객체를 찾는 쿼리 날린다고 가정해 보자. 플러시 되지 않은 객체는 DB에 값이 없으므로 조회되지 않는다. 그럼 이 쿼리는 아무것도 찾지 못할 것이다. 이처럼 객체를 찾는 쿼리를 성공시키기 위해서 플러시를 호출한다.

 

모드 옵션

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

 

Reference

https://www.inflearn.com/course/ORM-JPA-Basic

'Spring JPA' 카테고리의 다른 글

[Spring JPA] 데이터베이스 스키마 자동 생성  (0) 2023.01.20
[Spring JPA] 객체와 테이블 매핑  (0) 2023.01.19
[Spring JPA] 준영속  (0) 2023.01.18
[Spring JPA] 영속성 컨텍스트  (0) 2023.01.16
[Spring JPA] ORM, JPA  (0) 2023.01.13
Comments