티스토리 뷰

★영속성 컨텍스트란?

- 영속성 컨텍스트 (persistence context) 는 엔티티를 영구 저장하는 환경이다.

  엔티티 매니저가 엔티티를 저장하거나 조회할 시, 영속성 컨텍스트에 엔티티를 보관하고 관리한다.

  em.persist (member);

  persist() 메소드는 엔티티 매니저를 사용해서 회원 엔티티를 영속성 컨텍스트에 저장한다.

 

☆ 엔티티의 생명주기

 

엔티티의 4가지 상태 

- 비영속 (new / transient) : 영속성 컨텍스트와 전혀 관계가 없는 상태

- 영속 (managed) : 영속성 컨텍스트에 저장된 상태

- 준영속 (detached) : 영속성 컨텍스트에 저장되었다가 분리된 상태

- 삭제 (removed) : 삭제된 상태

 

☆ 비영속 (new / transient) 

 1. 엔티티 객체를 생성한 상태, 순수한 객체 상태 / 아직 저장하지 않은 상태이다. 

 2. 영속성 컨텍스트나 데이터베이스와 전혀 관련이 없다.

// 객체를 생성한 상태 (비영속)
Member member = new Member();
member.setId("member1");
member.setUsername("회원1");

☆ 영속 (managed) 

1. 영속성 컨텍스트에 의해 관리된다는 뜻

2. em.find()나 JPQL을 사용해서 조회한 엔티티도 영속 상태라고 할 수 있다.

// 객체를 저장한 상태 (영속)
em.persist(member);

 

☆ 준영속 

 

- 영속 상태의 엔티티를 영속성 컨텍스트가 관리 하지 않은 상태

// 회원 엔티티를 영속성 컨텍스에서 분리, 준영속 상태
em.detach(member);

// 이 두 메서드를 사용해도 준영속 상태가 된다.
em.close() // 영속성 컨텍스트 닫음
em.clear() // 영속성 컨텍스트 초기화

 

☆ 삭제 (removed) 

 

 1. 엔티티를 영속성 컨텍스트와 데이터베이스에서 삭제한다.

// 객체를 삭제한 상태 (삭제)
em.remove(member);

 

http://www.kyobobook.co.kr/product/detailViewKor.laf?ejkGb=KOR&mallGb=KOR&barcode=9788960777330&orderClick=LEa&Kc=

 

자바 ORM 표준 JPA 프로그래밍 - 교보문고

스프링 데이터 예제 프로젝트로 배우는 전자정부 표준 데이터베이스 프레임 | ★ 이 책에서 다루는 내용 ★■ JPA 기초 이론과 핵심 원리■ JPA로 도메인 모델을 설계하는 과정을 예제 중심으로

www.kyobobook.co.kr