플러시 & 준영속 상태

최연재·2022년 7월 6일
0

JPA

목록 보기
3/11
  • 플러시
  • 준영속 상태

1. 플러시

  • 영속성 컨텍스트의 변경내용을 DB에 반영
  • 플러시 발생
    1. 변경 감지
    2. 수정된 엔티티를 '쓰기 지연 SQL 저장소'에 등록
    3. '쓰기 지연 SQL 저장소'의 쿼리를 DB에 전송
  • 영속성 컨텍스트를 플러시하는 방법
    1. em.flush() - 직접 호출(잘 안씀)
    2. 트랜잭션 커밋 - 플러시 자동 호출
    3. JPQL 쿼리 실행 - 플러시 자동 호출
  • 플러시를 해도 1차 캐시 안 지워짐, 영속성 컨택스트를 비우지 않음
  • 플러시 모드 옵션 - EntityManager.setFlushMode(FlushModeType.COMMIT)
    1. FlushModeType.AUTO - 커밋이나 쿼리를 실행할 때 플러시(기본값)
    2. FlushModeType.COMMIT - 커밋할 때만 플러시

2. 준영속 상태

  • 영속 상태의 엔티티가 영속성 컨텍스트에 분리되는 것
  • 방법
    1. em.detach(entity) - 특정 엔티티만 준영속 상태로 전환
    2. em.clear() - 영속성 컨텍스트를 완전히 초기화
    3. em.close() - 영속성 컨텍스트를 종료

이 글은 김영한님의 '자바 ORM 표준 JPA 프로그래밍 - 기본편'을 수강하고 정리한 내용입니다.

profile
가보자고

0개의 댓글