JPA

[JPA] 준영속 상태

째로스 2023. 7. 13. 19:24

준영속 상태 -> 영속 상태 변환될 때

 em.persist(member);

 em.find(Member.class, "member1");

 

영속 상태 -> 준영속 상태

1) 영속 상태의 엔티티가 영속성 컨텍스트에서 분리되는 것

2) 영속성 컨텍스트가 제공하는 기능(1차 캐시, 변경 감지 등)을 사용 못함

 

준영속 상태로 만드는 방법

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

Member member = em.find(Member.class, 150L); // id가 Long타입이므로 뒤에 L붙임
member.setName("AAAAA");

em.detach(member);

tx.commit();  // 아무리 커밋해도 변경 내용이 DB에 저장되지 않음

 

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

Member member = em.find(Member.class, 150L);
member.setName("AAAAA");

em.clear();

tx.commit();  // 아무리 커밋해도 변경 내용이 DB에 저장되지 않음

 

3) em.close() : 영속성 컨텍스트 종료 - 모든 엔티티 관리 X