🧠 영속성(Persistence) Context

정의

영속성 컨텍스트는 엔티티를 저장하고 관리하는 논리적인 메모리 영역이다. JPA에서는 이 영역을 통해 엔티티의 생명주기와 변경 상태를 관리한다.

JPA에서 엔티티를 다룰 때 1차 캐시, 변경 감지, 쓰기 지연 같은 기능이 이 컨텍스트를 중심으로 동작한다.

image

🧩 역할

  • 엔티티를 1차 캐시로 관리한다
  • 동일한 식별자는 동일한 인스턴스로 보장한다
  • 변경 감지를 통해 수정 내용을 자동 반영한다
  • 쓰기 지연을 통해 flush 시점에 SQL을 처리한다
  • 엔티티 생명주기를 추적한다

🛠 동작 흐름

엔티티 상태

영속성 컨텍스트의 엔티티는 다음 상태를 가진다.

상태 설명
비영속 new로 생성한 상태로, 아직 관리되지 않는다
영속 EntityManager가 관리하는 상태다
준영속 영속성 컨텍스트에서 분리된 상태다
삭제 삭제가 예약된 상태다

상태 전이 예시

Member member = new Member();
entityManager.persist(member);
entityManager.detach(member);
entityManager.remove(member);

🧩 주요 특징

  • 1차 캐시 역할을 한다
  • 동일성 보장이 가능하다
  • 변경 감지가 자동으로 동작한다
  • 쓰기 지연이 발생한다
  • 트랜잭션 범위와 함께 동작하는 경우가 많다

⚠️ 주의사항

  • 영속성 컨텍스트는 EntityManager와 연관된다.
  • flush는 변경 내용을 DB에 반영하지만, 컨텍스트 자체를 비우는 것은 아니다.
  • clear는 관리 중인 엔티티를 모두 분리한다.
  • detach는 특정 엔티티만 준영속 상태로 만든다.
  • 트랜잭션 범위를 벗어나면 관리 상태가 달라질 수 있다.

📌 정리

  • 영속성 컨텍스트는 JPA가 엔티티를 관리하는 메모리 영역이다.
  • 1차 캐시, 동일성 보장, 변경 감지, 쓰기 지연의 기반이 된다.
  • JPA 동작을 이해할 때 가장 먼저 봐야 하는 핵심 개념이다.

연결문서

태그: ,

카테고리:

업데이트:

댓글남기기