[자바 ORM 표준 JPA 프로그래밍 - 기본편] 3-3강


https://inf.run/2zDo 강의를 수강하고 작성하는 게시물입니다.


1. 플러시

영속성 컨텍스트의 변경내용을 데이터베이스에 반영

2. 플러시 발생시

  1. 변경 감지
  2. 수정된 엔티티 쓰기 지연 SQL 저장소에 등록
  3. 쓰기지연 SQL 저장소의 쿼리를 데이터베이스에 전송(등록, 수정, 삭제 쿼리)

3. 영속성 컨텍스트를 플러시하는 방법

직접 쓰진 않지만 알고는 있어야한다!

  • em.flush()
  • 트랜젝션 커밋
  • JPQL 쿼리 실행

트랜젝션 커밋과 JPQL 쿼리 실행은 플러시 자동 호출된다.

자동호출되는 이유는 등록후 바로 조회하면 쿼리가 안나가고 있는 상황에서 조회를 하게되므로 오류가 난다. 그래서 JPA는 JPQL 쿼리 실행시 플러시가 자동으로 호출되게 되어있다.

4. 플러시 모드 옵션

  • FlushModeType.AUTO : 커밋이나 쿼리를 실행할 때 플러시 (기본값)
  • FlushModeType.COMMIT : 커밋할 때만 플러시

가급적 기본값 사용하는 것이 좋다.

5. 주의사항

  • 플러시는 영속성 컨텍스트를 비우지 않는다.
  • 플러시는 영속성 컨텍스트의 변경내용을 데이터베이스에 동기화
  • 트랜젝션이라는 작업단위가 중요하다. -> 커밋 직전에만 동기화 하면 된다.

댓글 남기기