1. 플러시란?

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

1. 플러시 발생

  • 변경감지
  • 수정된 엔티티 쓰기 지연 SQL 저장소에 등록
  • 쓰기 지연 SQL 저장소의 쿼리를 DB에 전송
    • 등록 / 수정 / 삭제 (쿼리)

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

  • em.flush() : 직접 호출
  • 트랜잭션 커밋 : 플러시 자동 호출
  • JPQL 쿼리 실행 : 플러시 자동 호출

3. 주의점

  • 영속성 컨텍스트를 비우지 않음
  • 영속성 컨텍스트의 변경 내용을 DB에 동기화
  • 트랜잭션이라는 작업 단위가 중요 > 커밋 직전에만 동기화하면 됨

2. 준영속 상태

  • 영속 상태의 엔티티가 영속성 컨텍스트에서 분리
  • 영속성 컨텍스트가 제공하는 기능을 사용 못함

1. 준영속 상태로 만드는 방법

  • em.detach(entity) : 특정 엔티티만 준영속 상태로 전환
  • em.clear() : 영속성 컨텍스트를 완전히 초기화
  • em.close() : 영속성 컨텍스트를 종료
Member member1 = em.find(Member.class, 1L);
em.clear();
Member member2 = em.find(Member.class, 1L);

System.out.println(member1 == member2);
//false

tx.commit();

본 포스팅은 김영한 선생님의 강의를 보고 정리한 글입니다.

Comments