JPA 영속성 컨텍스트
영속성 컨텍스트의 역할
JPA에서 영속성 컨텍스트는 엔티티를 장기간에 걸쳐 관리하는 내부적인 메커니즘으로, 엔티티의 생명주기를 관리합니다. 주요 기능은 다음과 같습니다:
엔티티의 영속성을 관리(생성, 조회, 갱신, 삭제).
1차 캐시를 통해 엔티티 조회의 성능을 향상시킵니다.
트랜잭션을 지원하고, 트랜잭션 완료 시 데이터베이스와 동기화합니다.
엔티티 생명주기
비영속(new/transient): JPA가 관리하지 않는 새로운 상태.
영속(managed): 영속성 컨텍스트에 저장된 상태.
준영속(detached): 영속성 컨텍스트에 저장되었다가 분리된 상태.
삭제(removed): 영속성 컨텍스트에 삭제 명령이 전달된 상태.
캐싱과 성능
1차 캐시: 각 영속성 컨텍스트 내에 존재하며, 한 트랜잭션 내에서 엔티티를 캐싱합니다. 반복된 조회를 최적화-> 성능 향상에 도움이 됩니다.
2차 캐시: 여러 영속성 컨텍스트 간 공유되며, 애플리케이션 전체의 성능 향상에 기여합니다. (데이터베이스 접근을 줄이고 성능을 향상시키는데 기여)
트랜잭션과 영속성
JPA에서 트랜잭션은 데이터베이스 작업의 완전성을 보장합니다.
영속성 컨텍스트는 트랜잭션 범위 안에서 엔티티의 상태를 관리하며,
트랜잭션 커밋 시점에 변경된 엔티티를 데이터베이스에 반영합니다.