728x90
01. 플러시의 개념
플러시란?
- 영속성 컨텍스트의 변경내용을 데이터베이스에 반영하는 것이다.
- 플러시라는 용어 때문에 혼동이 올 수 있는데, 영속성 컨텍스트를 비우는 것이 절대 아니다.
- 영속성 컨텍스트의 변경내용을 데이터베이스에 동기화 하는 것이다.
- 트랜잭션이라는 작업 단위를 기준으로, 커밋 직전에만 동기화를 하면 된다.
플러시가 발생한다는 것은 무엇일까?
- 변경을 감지하는 것이다.
- 수정된 엔티티 쓰기 지연 SQL 저장소에 등록하는 것이다.
- 쓰기 지연 SQL 저장소의 쿼리문(등록, 수정, 삭제)을 데이터베이스에 전송하는 것이다.
02. 영속성 컨텍스트를 플러시하는 방법
플러시하는 방법
em.flush()
를 직접 호출한다. (수동)- 트랜잭션 커밋 시 플러시가 자동 호출된다.
- JPQL 쿼리를 실행하면 플러시가 자동 호출된다.
03. 플러시 모드 옵션
예시 코드 : em.setFlushMode(FlushModeType.COMMIT)
FlushModeType.AUTO
: 커밋이나 쿼리를 실행할 때 플러시함을 의미한다. 기본값으로, 그냥 이대로 사용하면 된다.
FlushModeType.COMMIT
: 커밋할 때만 플러시함을 의미한다.
728x90