영속성 컨텍스트 & EntityManger

장원재·2024년 4월 25일
0

jpa

목록 보기
4/11

1. Overview

  • was 는 하나의 EntityManagerFactory 를 가지고 여러개의 EntityManager 를 만든다.
  • 영속성 컨텍스트는 데이터베이스 커넥션을 포함하고 있다.
  • 참고로 jpa 에서 데이터베이스와 관련된 모든 작업은 Transaction 단위 내에서 수행한다.

2. 영속성 켄택스트 vs EntityManger

  • EntityManger 를 생성하면 자연스럽게 이와 매핑되는 하나의 PersistenceContext 라는 공간이 생긴다고 생각하면 된다.
  • 쉽게 생각해서 EntityManger를 통해서 PersistenceContext 에 접근하는 것이다.

3. 변경 감지

  • jpa 에서 관리하는 객체를 디비에 저장하려는 시도를 하면 엔티티 메니저는 해당 객체를 영속성 컨텍스트인 1차 캐시에 저장한다.

  • 그리고 영속성 컨텍스트에 있는 내용이 변경이 되었을 때는 다음과 같이 동작한다. jpa 가 flush 하기 이전에 1차캐시에 들어왔을때 초기의 객체 상태를 담고 있는 스냅샷과 Entity를 비교하여, 변경이 생겼을 때 Update query를 생성해서 디비에 반영되게 한다.

  • 참고로 플러시는 트랜잭션이 커밋하거나 jpql 쿼리가 실행되는 시점에서 자동 호출된다.

profile
데이터 분석에 관심있는 백앤드 개발자 지망생입니다

0개의 댓글

관련 채용 정보