영속성 컨텍스트

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

영속성 컨텍스트의 작업을 도와주는 것이 엔티티 매니저