반응형
- 플러시, flush 간단 설명
- 영속성 컨텍스트의 변경 내용을 데이터베이스에 반영
- 변경 사항과 데이터베이스를 맞추는 것으로 쿼리를 날려주는 것이라고 보면 된다.
- 플러시가 발생하면 어떻게 되나?
- 변경 감지가 일어나고 수정된 엔티티가 쓰기 지연 SQL 저장소에 등록한다. 쓰기 지연 SQL 저장소의 쿼리를 데이터베이스에 전송한다. ( 등록, 수정, 삭제 쿼리 등)
- 플러시가 발생된다고 Commit 되는 것은 아니다.
- 영속성 컨텍스트를 어떻게 플러시하나?
- em.flush() 직접 호출한다.
- 트랜잭션을 커밋하면 자동으로 호출된다.
- 플러시를 실행해도 1차 캐시가 지워지지는 않고 쓰기 지연 SQL 저장소에 있는 것들이 데이터베이스에 반영이 되는 과정이다.데이터베이스에 쿼리가 즉시 나가고 그 다음에 Commit된다.
- Member member = new Member((200L, "member200"); em.persist(member); em.flush(); //강제로 호출한다. tx.commit();
- JPQL 쿼리를 실행하면 자동으로 호출된다.
- 플러시 모드 옵션도 있다.
- em.setFlushMode(FlushModeType.COMMIT) 형식으로 사용한다.
- FlushModeType.AUTO는 커밋이나 쿼리를 실행할 때 플러시가 일어난다.
- AUTO로 사용하는 것을 권장한다.
- FlushModeType.COMMIT
- 커밋할 때만 플러시가 일어난다. 쿼리를 실행할 때는 일어나지 않는다.
- FlushModeType.AUTO는 커밋이나 쿼리를 실행할 때 플러시가 일어난다.
- em.setFlushMode(FlushModeType.COMMIT) 형식으로 사용한다.
- 플러시 추가 설명
- 플러시는 영속성 컨텍스트를 비우지 않고 변경 내용을 데이터베이스에 동기화 하는 것이다.
- 트랜잭션 단위가 중요한데 커밋 직전에만 동기화를 하면 된다.
자바 ORM 표준 JPA 프로그래밍 - 기본편을 참고하여 공부하였습니다.
반응형
'Data Base > JPA' 카테고리의 다른 글
[JPA] : 엔티티 매핑과 매핑 종류 (0) | 2022.03.23 |
---|---|
[JPA] : 준영속 상태 (0) | 2022.03.23 |
[JPA] : JPA 영속성 컨텍스트(2) (0) | 2022.03.22 |
[JPA] : 영속성 컨텍스트(1) (0) | 2022.03.21 |
[JPA] : JPA 간단 개발과 JPQL 확인하기 (0) | 2022.03.20 |
댓글