본문 바로가기

강의/자바 ORM 표준 JPA

영속성 컨텍스트

영속성 컨텍스트


영속성 컨텍스트는 JPA를 이해하는데 가장 중요한 용어다.

영속성 컨텍스트에 대해서 명확하게 알게되면 JPA가 내부적으로 어떻게 돌아가는지 알 수 있다.

 

JPA를 쓰게되면 EntityManagerFactory와 EntityManager에 대해서 먼저 알아봐야 한다.

고객의 요청이 올 때마다 EntityManagerFactory를 이용하여 EntityManager를 생성하는데, EntityManager는 내부적으로 데이터 베이스 커넥션을 사용해서 db를 사용하게 된다.

 

그렇다면 영속성 컨텍스트는 무엇인가?

영속성 컨텍스트는 "엔티티를 영구 저장하는 환경" 이라는 뜻으로 EntityManager.persist(entity) 라는 명령어를 통해서 

영속성 컨텍스트에 entity를 저장한다. (db에 저장하는 것이 아니다.)

 

영속성 컨텍스트는 논리적인 개념으로 눈에 보이는 개념이 아니다.

영속성 컨텍스트는 EntityManager를 통해 접근할 수 있다.

EntityManager를 생성하면 그 안에 영속성 컨텍스트가 있다고 생각하면 된다.

(spring framework를 배우면 약간 개념이 달라진다고 한다.)

 

아래의 그림을 보면 이해가 한 결 편할 것이다.

EntityManager를 만들면 1:1로 영속성 컨텍스트라는 공간이 생기고, EntityManager를 통해서 접근을 할 수 있다.

 

 

엔티티의 생명주기


비영속

영속성 컨텍스트와 전혀 관계가 없는 새로운 상태

 

영속

영속성 컨텍스트에 관리되는 상태

persist, find

 

준영속

영속성 컨텍스트에 저장되었다가 분리된 상태

detach, remove

 

삭제

삭제된 상태