[JPA] 플러시와 준영속
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