: 영속 상태의 Entity가 영속성 컨텍스트에서 분리되는 것
- 영속에서 준 영속으로 바뀌는 상태
- 준 영속상태에서는 영속성 컨텍스트가 제공하는 기능을 사용할 수 없다.
앞으로 예제 코드는 다음을 생략한다.
EntityManager em = emf.createEntityManager(); EntityTransaction transaction = em.getTransaction(); transaction.begin(); // [트랜잭션] 시작 ... //(예제 코드 ...) ... tx.commit();
: 특정 Entity
만 준 영속상태로 바꾼다.
Member member = em.find(Member.class, 150L);
member.setName("siwony_");
em.detach(member); //준영속
tx.commit(); // insert 쿼리문이 날아가지 않는다.
selete
쿼리만 날아가고insert
쿼리는 날아가지 않는다.- 즉, 영속성 컨텍스트의 기능인 변경 감지(Dirty check)가 작동하지 않는다.
: 영속성 컨텍스트를 완전히 초기화 한다.
Member member = em.find(Member.class, 150L); //select 쿼리 나감
member.setName("siwony_");
em.clear(); //영속성 컨텍스트를 초기화 한다.
Member member2 = em.find(Member.class, 150L); //select 쿼리 나감
tx.commit();
중간에 한번 em.clear();
를 했기 때문에 select 쿼리가 두 번 나간다.
test code를 작성할 때 유용하다.
: 영속성 컨텍스트를 종료한다.