728x90
플러시란?
영속성 컨텍스트의 변경내용을 데이터베이스에 반영하는것
- 변경 감지
- 수정된 엔티티 쓰기 지연 SQL 저장소에 등록
- 쓰기 지연 SQL 저장소의 쿼리를 데이터베이스에 전송 (등록, 수정, 삭제 쿼리)
영속성 컨텍스트를 플러시하는 방법
- em.flush() - 직접 호출 -> 테스트할때만 거의 사용함 쓰기지연 SQL 저장소에 있는 데이터가 데이터베이스에 반영됨
- 트랜잭션 커밋 - 플러시 자동 호출
- JPQL 쿼리 실행 - 플러시 자동 호출
Member member = new Member(200L, "member200");
em.persist(member);
em.flush(); //다 즉시 일어난다.
(플러시를 하더라도 1차 CASH는 유지가 된다. 쓰기 지연 SQL 저장소에 있는 것들이 데이터베이스에 반영 되는 것이다.)
- 영속성 컨텍스트를 비우지 않음
- 영속성 컨텍스트의 변경내용을 데이터베이스에 동기화
- 트랜잭션이라는 작업 단위가 중요 -> 커밋 직전에만 동기화 하면 됨
준영속 상태로 만드는 방법
- em.detach(entity) 특정 엔티티만 준영속 상태로 전환
- em.clear() 영속성 컨텍스트를 완전히 초기화 e
- em.close() 영속성 컨텍스트를 종료
728x90