코딩딩/Spring

JPA의 준영속 상태

전낙타 2023. 10. 31. 21:30

JPA의 준영속상태

  • 영속 상태의 엔티티가 영속성 컨텍스트에서 분리
  • 영속성 컨텍스트가 제공하는 기능을 사용 못함 (darty checking같은 기능들)
// find로 엔티티를 찾아오는 순간 영속화 된다
Member member = em.find(Member.class, 150L);
member.setName("AAAAAA");

// detach를 사용해 준영속화 시켜 컨텍스트에서 제외한다
em.detach(member);
System.out.println("============================");
tx.commit();

위 코드에서는 select 퀴리만 생성되고 update 쿼리는 생성되지 않는다.

// find로 엔티티를 찾아오는 순간 영속화 된다
Member member = em.find(Member.class, 150L);
member.setName("AAAAAA");

em.clear()

Member member2 = em.find(Member.class, 150L);
System.out.println("============================");
tx.commit();

clear로 컨텍스트를 싹 날려버리면 member 엔티티가 준 영속화 되고 컨텍스트에 남아있는 memberEntity가 없음으로 다시 한번 select 문을 날리게 된다

당장은 사용할 일이 없고 나중에 개발을 하다보면 준영속화의 필요성을 느끼게 된다고 한다.