공부, 기록

JPA - 02 - 영속성 컨텍스트 본문

공부/소소한 개발

JPA - 02 - 영속성 컨텍스트

무는빼주세요 2021. 8. 21. 15:51

영속성 컨텍스트는 App과 DB 사이에서 효율적으로 데이터에 접근하고 관리하는 목적으로 사용되는 개념인 듯 하다.

영속성 컨텍스트는 모든 영속성 ID에 대해 고유한 엔티티 인스턴스가 있는 엔티티 세트입니다. 영속성 컨텍스트 내에서 엔터티는 관리 됩니다.  EntityManager는 자신의 라이프 사이클을 제어하고, 그들은 데이터 저장소 리소스에 액세스 할 수 있습니다.(참조 : openjpa.apache.org)

 

엔티티의 생명 주기

https://openjpa.apache.org/builds/1.2.3/apache-openjpa/docs/jpa_overview_em_lifecycle.html

 

Managed : 엔티티가 엔티티 매니저를 통해 영속성 컨텍스트에 저장 된 상태

 

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

 

New/Transient : 영속성 컨텍스트에 저장하지 않은 상태

 

Removed : 영속성 컨텍스트에서 삭제된 상태

 

영속성 컨텍스트 사용의 장점

  1. 1차 캐시
  2. 동일성 보장
  3. 트랙잭션을 지원하는 쓰기 지연
  4. 변경 감지
  5. 지연 로딩

1차 캐시 : find 메소드가 1차 캐시를 먼저 확인하고 없는 경우 DB에 접근

트랙잭션을 지원하는 쓰기 지연 : commit 을 할 경우 flush와 commit 두 단계로 이루어 지는데 Insert 등 트랜잭션이 db에 바로 전달되지 않고 쌓여 있다가 flush를 통하여 동기화를 한 후 commit 이 이루어져 db에 접근 횟수를 줄일 수 있다.

변경 감지 : Entity를 수정한 후 Commit하면 알아서 Update가 됨.

 

 

 

참조 :

https://openjpa.apache.org/builds/1.2.3/apache-openjpa/docs/manual.html#jpa_overview_emfactory_perscontext

https://ultrakain.gitbooks.io/jpa/content/chapter3/chapter3.4.html

'공부 > 소소한 개발' 카테고리의 다른 글

카프카 다중 컨슈머 설정 (multi kafka consumer config)  (0) 2021.09.04
GET POST PUT DELETE OPTION PATCH  (0) 2021.09.04
JPA - 01 - 기본 개념  (0) 2021.08.07
비동기 처리  (0) 2021.07.31
ELK 스택  (0) 2021.07.18