• 영속 -> 준영속
em.persist ->영속상태가 된다.
em.find 등을 해서 jpa를 사용하여 조회했는데 얘가 영속상태에 없다? 그러면
디비에서 가져와서 올려 -> 그럼 이걸 영속상태라고 한다.
• 영속 상태의 엔티티가 영속성 컨텍스트에서 분리(detached)된 것을 준영속 상태라고 한다.
• 준영속 상태의 엔티티는 영속성 컨텍스트가 제공하는 기능을 사용 못함
• 영속상태의 엔티티를 준영속 상태로 만드는 방법은 크게 3가지가 있다.
1. em.detach(entity) : 특정 엔티티만 준영속 상태로 전환한다.
2. em.claer() : 영속성 컨텍스트를 완전히 초기화한다.
3. em.close() : 영속성 컨텍스트를 종료한다.
1. 엔티티를 준영속 상태로 전환: detach()
Member member = em.find(Member.class, 150L);
member.setName("AAAAA");
em.detach(member); //이제 영속성에서 떼어낸다
System.out.println("=================");
tx.commit(); /*그럼 이제 쟤를 jpa에서 관리하지 않기때문에 커밋을 해도 아무일도 일어나지 않아*/
데이터를 변경했는데도 불구하고 select만 나오고 update쿼리는 나오지 않는다.
2. 엔티티를 컨텍스트 초기화: clear()
Member member = em.find(Member.class, 150L);
member.setName("AAAAA");
em.clear(); //통으로 다 날려버린다.
System.out.println("=================");
tx.commit(); /*완전 초기화 되기 때문에 커밋을 해도 아무일도 일어나지 않아*/
데이터를 변경했는데도 불구하고 select만 나오고 update쿼리는 나오지 않는다.
clear()로 영속성 컨텍스트가 초기화되기때문에 영속성 컨텍스트를 제거하고 새로 만든 것과 같다.
3. 영속성 컨텍스트 종료: close()
[출처] 김영한님의 자바 ORM 표준 JPA 프로그래밍 - 기본편
(https://www.inflearn.com/course/ORM-JPA-Basic/dashboard)
'JPA' 카테고리의 다른 글
엔티티 매핑 - 실전 예제 (0) | 2021.08.05 |
---|---|
엔티티 매핑 - 객체와 테이블 매핑/ 데이터베이스 스키마 자동 생성/ 필드와 컬럼 매핑/ 기본 키 매핑 (0) | 2021.08.04 |
2-2. 플러시 (0) | 2021.08.02 |
2-1. 영속성 관리 (0) | 2021.08.02 |
1-2. JPA애플리케이션 개발 (0) | 2021.07.30 |