JPA
1월 16일 JPA 영속 , 준영속 상태
Chaerin Yoo
2023. 1. 16. 10:38
JPA 준영속상태
영속 > 준영속
영속상태의 엔티티가 영속성 컨택스트에서 분리된 상태(detached)
영속성 컨택스트가 제공하는 기능을 사용할 수 없음.
영속성이 되는 방법
1.em.persist(객체)
2.em.find() 등으로 객채를 조회하여 1차 캐시를 찾아보고 찾지못한경우 DB을 조회하고 찾은 결과를 1차캐시에 넣는 경우
즉 JPA가 객체를 관리하는 상황
준영속
1차캐시에서 더이상 해당 객체를 관리하지 않는 상태
em.detach(영속성엔티티) 로 준영속 상태를 만들 수 있다.
이 경우 해당객체를 변경해도 commit시 flush가 되어도 변경사항이 db에 적용되지 않는다.
detached하면 JPA와 관련된 모든곳에서 제외되게 된다.
준영속이 되는 방법
1.em.detach(entity)
영속성인 특정엔티티만 준영속 상태로 전환
2.em.clear()
영속성 컨텍스트를 완전히 초기화(모든 엔티티를 제외시킨다)
3.em.close()
영속성 컨텍스트를 닫는다.
ㄴclear처럼 영속성 컨텍스트를 모두 지우지는 않지만 더이상 영속성으로서의 기능을 지원하진 않는다.