dev/spring JPA 활용 웹만들기
준영속 상태
dev_0hoon
2024. 1. 30. 16:30
준영속 상태
- 영속 -> 준영속
- 영속 상태의 엔티티가 영속성 컨텍스트에서 분리(detached)
- 영속성 컨텍스트가 제공하는 기능을 사용 못함
Member member = entityManager.find(Member.class, 150L);
member.setName("adfadaf");
entityManager.detach(member); //영속성 컨텐츠에서 제외 시켜버린다. 그러므로 커밋시점에 아무 일도 일어나지 않는다.
ts.commit();
이렇게 사용하면 detach에서 영속 컨텍스트에서 제외시켜버린다. 영속 상태였다가 영속 상태에서 빠지면 준영속 상태라 말한다.
- em.detach(entity) : 특정 엔티티만 준영속 상태로 전환
- em.clear() : 영속성 컨텍스트를 완전히 초기화
- em.close() : 영속성 컨텍스트를 종료
Member member = entityManager.find(Member.class, 150L);
member.setName("dddd");
entityManager.clear();
Member member2 = entityManager.find(Member.class, 150L); // 새로 불러오게 된다.
ts.commit();
clear() 시에도 당연히 안되며 새로 불러오면 db에서 새로 땡겨온다.