준영속 상태란?
- 영속 상태의 엔티티가 영속성 컨텍스트에서 분리(detached)
- 영속성 컨텍스트가 제공하는 기능(1차 캐시, dirty checking 등등..)을 사용 못함
Q. 준영속 상태랑 비영속 상태 차이?
- 비영속 상태 (Transient): 객체가 한 번도 영속성 컨텍스트에 의해 관리되지 않은 상태
- 준영속 상태 (Detached): 객체가 한 번 영속성 컨텍스트에 의해 관리되었으나, 현재는 더 이상 관리되지 않는 상태
준영속 상태로 만드는 방법
em.detach(entity)
- 특정 엔티티만 준영속 상태로 전환
em.clear()
- 영속성 컨텍스트를 완전히 초기화
em.close
- 영속성 컨텍스트를 종료
em.detach(entity)
- 특정 엔티티만 준영속 상태로 전환
em.find를 하면 영속 상태이다. (DB에서 가져와 1차 캐시에 올려주므로)
em.detach(member)를 하면 jpa에서 더이상 관리하지 않음

결과

결과를 보면 em.detach(member) 이후에
1차 캐시가 동작하지 않았고(select문 2번 호출됨)
member.setName(”AAAAA”)한 뒤 dirty-checking도 되지않았다.
(update문이 자동으로 생성되지 않았음)
em.detach를 하면 영속성 컨텍스트가 제공하는 기능을 사용하지 못한다!
em.clear()
- entityManager 안에 있는 영속성 컨텍스트를 통째로 다 비움
실행 시 결과는 똑같다.

결과

em.close
- 영속성 컨텍스트를 종료
'Spring, JPA 🌱 > 김영한 JPA' 카테고리의 다른 글
[김영한 JPA] 플러시 (flush) (0) | 2025.02.07 |
---|---|
[김영한 JPA] 영속성 컨텍스트(Pesistence Context)의 이점 (0) | 2025.02.07 |
[김영한 JPA] 영속성 컨텍스트 (Persistence Context) (1) | 2025.02.07 |
[김영한 JPA] JPA 구동 방식 (0) | 2025.02.07 |
준영속 상태란?
- 영속 상태의 엔티티가 영속성 컨텍스트에서 분리(detached)
- 영속성 컨텍스트가 제공하는 기능(1차 캐시, dirty checking 등등..)을 사용 못함
Q. 준영속 상태랑 비영속 상태 차이?
- 비영속 상태 (Transient): 객체가 한 번도 영속성 컨텍스트에 의해 관리되지 않은 상태
- 준영속 상태 (Detached): 객체가 한 번 영속성 컨텍스트에 의해 관리되었으나, 현재는 더 이상 관리되지 않는 상태
준영속 상태로 만드는 방법
em.detach(entity)
- 특정 엔티티만 준영속 상태로 전환
em.clear()
- 영속성 컨텍스트를 완전히 초기화
em.close
- 영속성 컨텍스트를 종료
em.detach(entity)
- 특정 엔티티만 준영속 상태로 전환
em.find를 하면 영속 상태이다. (DB에서 가져와 1차 캐시에 올려주므로)
em.detach(member)를 하면 jpa에서 더이상 관리하지 않음

결과

결과를 보면 em.detach(member) 이후에
1차 캐시가 동작하지 않았고(select문 2번 호출됨)
member.setName(”AAAAA”)한 뒤 dirty-checking도 되지않았다.
(update문이 자동으로 생성되지 않았음)
em.detach를 하면 영속성 컨텍스트가 제공하는 기능을 사용하지 못한다!
em.clear()
- entityManager 안에 있는 영속성 컨텍스트를 통째로 다 비움
실행 시 결과는 똑같다.

결과

em.close
- 영속성 컨텍스트를 종료
'Spring, JPA 🌱 > 김영한 JPA' 카테고리의 다른 글
[김영한 JPA] 플러시 (flush) (0) | 2025.02.07 |
---|---|
[김영한 JPA] 영속성 컨텍스트(Pesistence Context)의 이점 (0) | 2025.02.07 |
[김영한 JPA] 영속성 컨텍스트 (Persistence Context) (1) | 2025.02.07 |
[김영한 JPA] JPA 구동 방식 (0) | 2025.02.07 |