준영속 상태
2023. 11. 20. 23:31ㆍJAVA/스프링 데이터 JPA
준영속 상태
- 이해하기 쉽지는 않음
- 영속 -> 준영속
영속 : 1차 캐시에 올라간 상태
- 영속 상태의 엔티티가 영속성 컨텍스트에서 분리
준영속 상태로 만드는 법
- em.detach(entity) : 특정 엔티티만 준영속 상태로 전환
- em.clear() : 영속성 컨텍스트를 완전히 초기화
- em.close() : 영속성 컨텍스트를 종료
try {
Member member = em.find(Member.class, 150L);
member.setName("AAAAA");
em.detach(member); // <- JPA에서 더이상 관리하지 않음 -> 아무일도 일어나지 않음
System.out.println("====================");
tx.commit();
} catch (Exception e) {
em.close();
}
결과
Hibernate:
select
member0_.id as id1_0_0,
member0_.name as name2_0_0_
from
Member member0_
where
member0_.id=?
====================
쿼리만 나가고 Update Query가 나가지 않는다. Detach를 했기 때문이다.
사실 직접 쓸 일은 거의 없긴 하다.
다음과 같은 방법으로도 할 수 있다.
try {
Member member = em.find(Member.class, 150L);
member.setName("AAAAA");
em.clear();
Member member = em.find(Member.class, 150L);
System.out.println("====================");
tx.commit();
} catch (Exception e) {
em.close();
}
위 코드는 통으로 지운다.
아직까지는 준영속 상태에 대해서 깊게 이해할 필요는 없다.
'JAVA > 스프링 데이터 JPA' 카테고리의 다른 글
| 데이터베이스 스키마 자동 생성 (0) | 2023.12.27 |
|---|---|
| 객체와 테이블 매핑 (0) | 2023.12.24 |
| 플러시 (0) | 2023.11.20 |
| 영속성 컨텍스트 2 (2) | 2023.11.12 |
| 영속성 컨텍스트 1 (0) | 2023.11.12 |