RATSENO

[JPA]플러시 (flush) 본문

DEV/JPA

[JPA]플러시 (flush)

RATSENO 2020. 8. 4. 11:29

플러시(flush())는 영속성 컨텍스트의 변경 내용을 데이터베이스에 반영합니다.

 

1. 변경 감지가 동작해서 (엔티티 수정 시) 영속성 컨텍스트에 있는 모든 엔티티를 스냅샷과 비교해서 수정된 엔티티를 찾습니다.

수정된 엔티티는 수정 쿼리를 만들어 쓰기 지연 SQL 저장소에 등록합니다.

 

2. 쓰기 지연 SQL 저장소의 쿼리를 데이터베이스에 전송합니다.(등록, 수정, 삭제 쿼리)

 

영속성 컨텍스트를 플러시하는 방법은 3가지 입니다.

 

1. em.flush()를 직접 호출한다.

 

2.트랜잭션 커밋 시 플러시가 자동 호출된다.

 

3.JPQL 쿼리 실행시 플러시가 자동 호출된다.

 

유의사항) 플러시라는 이름으로 인해 영속성 컨텍스트에 보관된 엔티티를 지우는 것으로 생각하면 안됩니다.

영속성 컨텍스트의 변경 내용을 데이터베이스테 동기화하는 것이 플러시 입니다.

 

참고 및 출처

도서 : 자바 ORM 표준 JPA 프로그래밍  - 저자 : 김영한 님

강의 : 자바 ORM 표준 JPA 프로그래밍 (기본편) - 강사 : 김영한 님

'DEV > JPA' 카테고리의 다른 글

[JPA]영속성 콘텍스트(persistence context)  (0) 2020.08.03
Comments