본문 바로가기
자바웹프로그래밍/JPA

JPA - 영속성 컨텍스트 ?

by 디찌s 2023. 9. 12.
728x90
반응형

영속성 컨텍스트

- 엔터티를 영구 저장하는 환경이다. 

예) entitymanager.persist(member) - 와 같은 엔터티매니저 persist 메소드를 사용하면 영속성 컨텍스트에 attach된다.

 

 

엔터티에는 생명주기가 있으며 다음과같이 4가지가 있다

 

비영속 : 영속성 컨텍스트와 상관이없다. (영속성 컨텍스트에 attach되어있지 않다.)

영속 : 영속성 컨텍스트에 저장된 상태이다.

준영속 : 영속성 컨텍스트에 저장되어있다 특정 메소드를 통해 분리된 상태이다.

삭제 : 영속성 컨텍스트에서 삭제된 상태이다.

 

jpa에선 영속성 컨텍스트를 관리하는데 왜 이런식으로 관리하는가?

영속성 컨텍스트로 엔터티를 관리시 장점은 아래와같이 5가지가 있다

 

1. 영속성 컨텍스트(메모리)에서 가져와 빠르게 조회할수있다.(1차 캐시 (기본 @ID) 를 통해 )

2. 동일성 보장

3. 트랜잭션을 지원하는 쓰기 지연 (insert를 할때 query를 하나하나 날리지않고 한번에 보낼수있음. )

4. 변경감지 (영속성 컨텍스트에 있으면 snapshot을 통해 변경감지를 할수있다.)

5. 지연로딩 (객체를 사용할때까지 데이터베이스에서 조회하지않는다.)

 

 

 

 

728x90
반응형

댓글