티스토리 뷰
★ 준영속이란?
- 준영속 상태는 영속성 컨텍스트가 관리하는 영속 상태의 엔티티가 영속성 컨텍스트에서 분리된 상태를 말한다.
☆ 영속 상태의 엔티티를 준영속 상태로 만드는 방법
1. em.detach(entity) : 특정 엔티티만 준영속 상태로 전환한다.
2. em.clear( ) : 영속성 컨텍스트를 완전히 초기화한다.
3. em.close( ) : 영속성 컨텍스트를 종료한다.
☆ 준영속 상태의 특징
1. 거의 비영속 상태에 가깝다.
- 영속 컨텍스트가 관리하지 않는다.
그래서 1차 캐시, 쓰기 지연 등등 영속성 컨텍스트가 제공하는 어떠한 기능도 동작하지 않는다.
2. 식별자 값을 가지고 있다.
- 준영속 상태는 이미 한 번 영속 상태였으므로 반드시 식별자 값을 가지고 있다.
3. 지연 로딩을 할 수 없다.
- 준영속 상태는 영속성 컨텍스가 더는 관리하지 않으므로 지연 로딩시 문제가 발생한다.
☆ 병합: merge( )
- 준영속 상태의 엔티티를 다시 영속 상태로 변경하려면 병합을 사용하면 된다.
merge( ) 메소드는 준영속 상태의 엔티티를 받아서 그 정보로 새로운 영속 상태의 엔티티를 반환한다.
public class ExamMergeMain {
EntityManagerFactory emf =
Persistence.createEntityManagerFactory(("jpabook");
public static void main(String[] args) {
Member member = createMember("memberA", "회원1");
member.setUsername("회원명변경");
mergeMember(member);
}
static Member createMember(String id, String username) {
// == 영속성 컨텍스트1 시작 ==//
EntityManager em1 = emf.createEntityManager();
EntityTransaction tx1 = em1.getTransaction();
tx1.begin();
Member member = new Member();
member.setId(id);
member.setUsername(username);
em1.persist(member);
tx1.commit();
em1.close(); // 영속성 컨텍스트1 종료,
// member 엔티티는 준영속 상태가 된다.
// == 영속성 컨텍스트1 종료 ==//
return member;
}
static void mergeMember(Member member) {
// == 영속성 컨텍스트2 시작 ==//
EntityManager em2 = emf.createEntityManager();
EntityTransaction tx2 = em2.getTransaction();
tx2.begin();
Member mergeMember = em2.merge(member);
tx2.commit();
// 준영속 상태
System.out.println("member = " + member.getUsername());
// 영속 상태
System.out.println("mergeMember = " + mergeMember.getUsername());
System.out.println("em2 contains member = " + em2.contains(member));
System.out.println("em2 contains mergeMember = " + em2.contains(mergeMember));
em2.close(); // 영속성 컨텍스트2 종료,
// == 영속성 컨텍스트2 종료 ==//
}
}
자바 ORM 표준 JPA 프로그래밍 - 교보문고
스프링 데이터 예제 프로젝트로 배우는 전자정부 표준 데이터베이스 프레임 | ★ 이 책에서 다루는 내용 ★■ JPA 기초 이론과 핵심 원리■ JPA로 도메인 모델을 설계하는 과정을 예제 중심으로
www.kyobobook.co.kr
'차곡차곡 > Java' 카테고리의 다른 글
| [JAVA] 엔티티 매핑 (2) - 데이터베이스 스키마 자동 생성 (0) | 2022.07.23 |
|---|---|
| [Java] 엔티티 매핑 (1) - @Entity / @Table / 그 외 다양한 매핑 (0) | 2022.07.23 |
| [JAVA] JPA 영속성 관리 (4) - 플러시 (flush) (0) | 2022.07.17 |
| [JAVA] JPA 영속성 관리 (3) - 영속성 컨텍스트의 특징과 장점 (0) | 2022.07.17 |
| [Java] JPA 영속성 관리 (2) - 영속성 컨텍스트 (persistence context) (0) | 2022.07.17 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- JPQL이란
- 데이터베이스 스키마 자동 생성
- 리액트 엘리먼트 렌더링하기
- 엔티티매니저팩토리
- intellij 한글 깨짐
- React
- pip 설치 오류
- DDL 생성 콘솔 출력
- JPA 기본키 매핑 전략
- 콘솔 창 한글 깨짐
- 영주역 맛집
- Counter 만들기
- 온량 서울숲점
- 리액트 이벤트 처리하기
- 버튼누르면전구이미지변하기
- tick 만들기
- JPA
- 로제 파스타 맛집
- 영주 한우
- 풍기역맛집
- JPA애플리케이션개발코드
- React를 이용한 Counter 만들기
- 꾸덕꾸덕 파스타 맛집
- JPA라이브러리
- 토마호크 맛집
- 커틀렛 맛집
- 엘리먼트 렌더링
- fragment태그
- 영속성 관리
- react counter
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | ||||||
| 2 | 3 | 4 | 5 | 6 | 7 | 8 |
| 9 | 10 | 11 | 12 | 13 | 14 | 15 |
| 16 | 17 | 18 | 19 | 20 | 21 | 22 |
| 23 | 24 | 25 | 26 | 27 | 28 | 29 |
| 30 | 31 |
글 보관함
