자바 Java/Spring
[JPA]플러시
oilater
2023. 2. 15. 12:19
플러시란 영속성 컨텍스트의 변경 내용을 데이터베이스에 반영하는 것을 말한다.
DB 트랜젝션이 커밋될 때 플러시가 일어나는데
우리가 쌓아놨던 insert, delete, update 등의 쿼리들이 DB로 날라가는 것이다.
영속성 컨텍스트의 변경사항과 DB를 맞추는 작업이 flush이다.
transaction 이 커밋되어 플러시가 발생하면 생기는 일
1. 변경 감지
2. 수정된 엔티티 쓰기 지연 SQL 저장소에 등록
3. 쓰기 지연 SQL 저장소의 쿼리를 데이터베이스에 전송(등록, 수정, 삭제 쿼리)
영속성 컨텍스트를 플러시하는 방법
1. em.flush() - 직접 호출
2. 트랜잭션 커밋 - 플러시 자동 호출
3. JPQL 쿼리 실행 - 플러시 자동 호출 (그냥 그렇구나 하고 이해만 하기)
플러시는!
- 영속성 컨텍스트를 비우지 않음!
- 영속성 컨텍스트의 변경내용을 데이터베이스에 동기화
- 트랜젝션이라는 작업 단위가 중요 -> 커밋 직전에만 동기화하면 됨.
728x90
반응형
LIST