본문 바로가기
BackEnd/Spring Data JPA

영속성 컨텍스트(Persistence Context)

by pan5158 2022. 5. 18.

영속성 컨텍스트란?

JPA를 이해하는데 가장 중요한 용어는 영속성 컨텍스트(Persistence Context) 입니다.  우리말호 번역하기는 어렵지만 해석하자면 엔티티를 영구 저장하는 환경이라는 뜻 입니다. 엔티티 매니저로 엔티티를 저장하거나 조회하면 엔티티 매니저는 영속성 컨텍스트에 엔티티를 보관하고 관리합니다.

 

1. 엔티티의 생명주기

엔티티에는 4가지 상태가 존재합니다.

  • 비영속(new/transient): 영속성 컨텍스트와 전혀 관계가 없는 상태
  • 영속(managed): 영속성 컨텍스트에 저장된 상태
  • 준영속(detached): 영속성 컨텍스트에 저장되었다가 분리된 상태
  • 삭제(removed): 삭제된 상태

엔티티 생명주기

1). 비영속

엔티티 객체를 생성했다. 지금은 순수한 객체 상태이며 아직 저장하지 않았다. 따라서 영속성 컨텍스트나 데이터베이스와는 전혀 관련이 없다. 이것을 비영속 상태라 한다.

 

2). 영속

엔티티 매니저를 통해서 엔티티를 영속성 컨텍스트에 저장했다. 이렇게 영속성 컨텍스트가 관리하는 엔티티를 영속 상태라 한다.

 

3). 준영속

영속성 컨텍스트가 관리하던 영속 상태의 엔티티를 영속성 컨텍스트가 관리하지 않으면 준영속 상태가 된다.

특정 엔티티를 준영속 상태로 만들려면 em.detach( )를 호출하면 된다. em.close( ) 호출해서 영속성 컨텍스트를 닫거나

em.clear( ) 를 호출해서 영속성 컨텍스트를 초기화해도 영속성 컨텍스트가 관리하던 영속 상태의 엔티티는 준영속 상태가 된다.

 

4). 삭제

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

 

 

 

'BackEnd > Spring Data JPA' 카테고리의 다른 글

JPA - @MappedSuperclass  (0) 2022.11.20
JPA 연관관계 @ManyToOne  (0) 2022.11.12
Hibernate ORM 이란  (0) 2022.08.31
💡 ORM 이란?  (0) 2022.08.04
JPA(Java Persistence)  (0) 2022.05.17