flush()
2021. 1. 17. 20:00ㆍJPA/JPA
flush()
- 변경 감지
- 수정된 엔티티 쓰기 지연 SQL 저장소에 등록
- 쓰기 지연 SQL 저장소의 쿼리를 데이터베이스에 전송 (등록, 수정, 삭제 쿼리)
flush()가 호출될때
- em.flush() - 직접 호출
- 트랜잭션 커밋 - 플러시 자동 호출
- JPQL 쿼리 실행 - 플러시 자동 호출 -> JPQL이 실행되는 시점에 선행된 쿼리가 JPQL이 실행된 결과에 영향을 줄 수 있어 플러시가 자동 호출되는것이 기본값.
flush 모드 옵션
예시) em.setFlushMode(FlushModeType.COMMIT)
FlushModeType.AUTO - 커밋이나 쿼리를 실행할 때 플러시 (기본값)
FlushModeType.COMMIT - 커밋할 때만 플러시 -> JPQL이 실행되는 시점에 flush()를 자동 호출하지 않는것. JPQL이 실행되는 시점에 선행된 쿼리가 현재 JPQL과 아무 상관이 없다면 굳이 flush()를 호출할 필요가 없어 세팅하는 경우.
'JPA > JPA' 카테고리의 다른 글
기본키 매핑 어노테이션 정리 @Id, @GeneratedValue, @SequenceGenerator, @TableGenerator (0) | 2021.01.18 |
---|---|
컬럼 매핑 어노테이션 정리 @Column, @Temporal, @Enumerated, @Lob, @Transient (0) | 2021.01.18 |
@Entity (0) | 2021.01.17 |
스키마 자동 생성 (0) | 2021.01.17 |
영속성 컨텍스트와 엔티티 (0) | 2021.01.17 |