목차
  1.  
  2.  
728x90

 

01. 준영속 상태

 

 

준영속 상태란?

  • 영속 상태에서 준영속 상태로 바뀌면, 영속 상태의 엔티티가 영속성 컨텍스트에서 분리(detached)됨을 말한다.
  • 따라서 영속성 컨텍스트가 제공하는 기능을 사용하지 못한다.

 

 

영속 상태란?

  • JPA가 관리하는 상태로, 1차 캐시에 올라간 상태이다.

 


 

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

 

 

1) em.detach(entity) : 특정 엔티티만 준영속 상태로 전환한다.

2) em.clear() : 영속성 컨텍스트를 완전히 초기화한다.

3) em.close() : 영속성 컨텍스트를 종료한다.

 

 


 

03. 준영속 상태 예시 코드

 

 

detach 예시 코드

  • em.detach(member) 코드는 더 이상 member를 JPA에서 관리하지 않도록 하는 것이다.
  • detach 했기 때문에 update 쿼리는 나가지 않는다.
  • 당연히 DB에도 변경사항이 없다.
Member member = em.find(Member.class, 150L);
member.setName("AAAA");
em.detach(member);

 

 

실행 전 DB 상태

 

 

 

실행 후 DB 상태

 

 

 

clear 예시 코드

  • em.clear(); 코드는 통으로 1차 캐시 초기화한다.
  • 따라서 update 쿼리문은 나타나지 않고, member1를 조회하는 select 쿼리문 한 개, member2를 조회하는 select 쿼리문 한 개가 나타난다.
Member member1 = em.find(Member.class, 150L);
member1.setName("AAAA");
em.clear();
Member member2 = em.find(Member.class, 150L);

 

실행 전 DB 상태이고

 

실행 후 DB 상태이다.

728x90

'JPA' 카테고리의 다른 글

데이터베이스 스키마 자동 생성  (0) 2024.01.05
객체와 테이블 매핑  (1) 2024.01.02
플러시  (0) 2023.12.30
영속성 컨텍스트  (2) 2023.12.30
애플리케이션 개발  (2) 2023.12.30