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);
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);
728x90
'JPA' 카테고리의 다른 글
데이터베이스 스키마 자동 생성 (0) | 2024.01.05 |
---|---|
객체와 테이블 매핑 (1) | 2024.01.02 |
플러시 (0) | 2023.12.30 |
영속성 컨텍스트 (2) | 2023.12.30 |
애플리케이션 개발 (2) | 2023.12.30 |