영속성(Persistence) Context
🧠 영속성(Persistence) Context
정의
영속성 컨텍스트는 엔티티를 저장하고 관리하는 논리적인 메모리 영역이다. JPA에서는 이 영역을 통해 엔티티의 생명주기와 변경 상태를 관리한다.
JPA에서 엔티티를 다룰 때 1차 캐시, 변경 감지, 쓰기 지연 같은 기능이 이 컨텍스트를 중심으로 동작한다.

🧩 역할
- 엔티티를 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 동작을 이해할 때 가장 먼저 봐야 하는 핵심 개념이다.
댓글남기기