영속성 컨텍스트
- JPA에서 엔티티 객체들을 관리하는 메모리 내 저장소
- 애플리케이션이 데이터베이스와 상호작용 할 때 엔티티 객체들을 캐싱하고 상태 변화를 추적하여 트랜잭션 커밋 시점에 데이터베이스와 동기화 하는 역할
- 엔티티 관리, 변경 감지, 동일성 보장, 1차 캐시 역할
- 엔티티 상태
- Transient(비영속) : 새로 생성된 객체, 아직 영속성 컨텍스트에 등록되지 않은 상태, 데이터베이스와 연관 X
- Persistent(영속) : 엔티티 매니저에 의해 영속성 컨텍스트에 등록된 상태, 변경사항이 자동으로 감지되고 트랜잭션 커밋 시점에 데이터베이스와 동기화
- Detacthed(분리) : 영속성 컨텍스트에 속해있었으나 끊긴 상태, 변경이 데이터베이스에 반영 X
- Removed(삭제 예정) : 엔티티가 삭제 대상으로 표시된 상태, 트랜잭션 커밋시 실제로 데이터베이스에서 삭제됨
영속성 컨텍스트의 작업을 도와주는 것이 엔티티 매니저