BE/JPA

[JPA] 7. 플러시 & 준영속상태

멍목 2022. 4. 13. 00:42
반응형

자바 ORM 표준 JPA 프로그래밍

 

 

 

이 포스팅에서 작성하는 내용은 자바 ORM 표준 JPA 프로그래밍 (김영한 지음) 에서 발췌하였습니다.

 

 

 

1. 플러시

- 영속성 컨텍스트의 변경 내용을 DB에 반영

- 트랜잭션이 커밋될 때 발생 (그 외에도 가능)

- 쉽게 말해서, JPA와 데이터베이스를 서로 맞추는 과정 

- 참고로 플러시를 해도 1차 캐시, 영속성 컨텍스트는 지워지지 않는다.

 

1) 플러시 호출 방법

  1. 직접 호출 : em.flush();
  2. 트랜잭션 커밋(플러시 자동 호출) : tx.commit();
  3. JPQL 쿼리 실행(플러시 자동 호출)

 

2) 플러시 모드 옵션

// 커밋이나 쿼리를 실행할 때 플러시 (기본값)
em.setFlushMode(FlushModeType.COMMIT);

// 커밋할 때만 플러시 (JPQL 시 자동 호출, 직접 호출 막을 수 있음)
em.setFlushMode(FlushModeType.COMMIT);

 

 

 

2. 준영속 상태

- 영속 상태에서 detach로 인해 영속성 컨텍스트에서 분리된 상태

- 영속성 컨텍스트가 제공하는 기능을 사용할 수 없음

 

 

1) 준영속 상태 만드는 방법

  1. 특정 엔티티만 준영속 상태로 전환 : em.detach(entitiy)
  2. 영속성 컨텍스트를 완전히 초기화 : em.clear()
  3. 영속성 컨텍스트를 종료 : em.close()
반응형