반응형
JPA 게시글은 대부분 인프런의 김영한님의 강의인 '자바 ORM 표준 JPA 프로그래밍' 기반으로 내용을 정리했습니다.
준영속 상태
영속 상태가 되는 방법
- em.persist() - 저장
- find() - 조회
준영속
준영속 상태란 영속성 컨텍스트가 관리하는 영속 상태의 엔티티가 영속성 컨텍스트에서 분리(detached)된 것을 준영속 상태라 한다. 준영속 상태가 되면 영속성 컨텍스트가 제공하는 기능(변경 감지 등..)을 사용하지 못한다.
준영속 상태로 만드는 방법
- em.detach(entity) : 특정 엔티티만 준영속 상태로 전환
// 영속
Member member = em.find(Member.class, 150L);
member.setName("AAAAA");
// 준영속
em.detach(member);
System.out.println("============================");
tx.commit(); // 커밋할 때 아무일도 일어나지 않음.
사실 지금 단계에서 직접 쓸 일은 별로 없다.
- em.clear() : 영속성 컨텍스트를 완전히 초기화
Member member = em.find(Member.class, 150L);
member.setName("AAAAA");
// 준영속
//em.detach(member);
em.clear();
System.out.println("============================");
tx.commit(); // 커밋할 때 아무일도 일어나지 않음.
대부분 테스트 케이스 작성할 때 도움이 된다.
- em.close() : 영속성 컨텍스트를 종료
준영속 상태의 특징
- 거의 비영속 상태에 가까움
영속성 컨텍스트가 관리하지 않기 때문에 영속성 컨텍스트에서 지원하는 모든 기능(변경 감지, 지연 로딩 등)을 사용할 수 없다. - 식별자 값을 가지고 있음
비영속 상태는 식별자 값이 없을 수 있지만 준영속 상태는 이미 한 번 영속 상태였으므로 식별자 값을 가지고 있다.
반응형