본문 바로가기
Computer Science

[CS] Persistence Context (영속성 컨텍스트)

by jyc_ 2025. 1. 24.

정의

엔티티 객체를 관리하는 메모리상의 저장소로, 1차 캐시, 쓰기 지연, 변경 감지 등의 기능을 통해 데이터베이스와 애플리케이션 간의 데이터를 효율적으로 관리하고 최적화하는 역할을 수행한다.


특성

1차 캐시

  • 영속성 컨텍스트는 엔티티 객체를 1차 캐시에 저장한다.
  • 같은 트랜잭션 내에서는 동일한 엔티티를 재사용하므로, 불필요한 DB 조회를 막을 수 있다.

 

쓰기 지연

  • 엔티티 인스턴스에 대한 쿼리를 바로 DB에 보내지않고 1차 캐시에만 반영한다.
  • 쿼리는 쓰기 지연 저장소에 모아둔다.
  • 동기화(Flush)할 때 모아두었던 쿼리를 한번에 DB로 전송한다.

즉, 쿼리를 모아두었다가 트랜잭션이 커밋될 때 한번에 반영한다.

 

더티 체킹

  • 자동으로 변경을 감지하는 것
  • 엔티티가 영속성 컨텍스트에 처음 들어올 때 그 상태를 복사해 저장한다. (스냅샷)
  • Flush 하기 전 스냅샷과 현재 상태를 비교해서 쿼리를 쓰기 지연 저장소에 추가한다.

엔티티의 상태

비영속

객체가 생성되었지만, 영속성 컨텍스트에 관리되지 않는 상태

영속

엔티티가 영속성 컨텍스트에 저장되어 관리되는 상태

→ 1차 캐시, 쓰기 지연, 변경 감지의 대상

준영속

영속 상태였으나, 영속성 컨텍스트에서 분리된 상태. 영속성 컨텍스트가 닫히면 그 안에 있던 영속 객체는 준영속 상태가 된다.

삭제

영속성 컨텍스트에서 관리되고 있으나 삭제하기로 표시된 상태. 다음 Flush 작업 시 DELETE 쿼리가 지연 저장소에 들어간다.


결론

영속성 컨텍스트는 1차 캐시와 쓰기 지연 매커니즘을 통해 데이터베이스 접근을 최소화하고, 효율적인 ORM을 가능하게 한다.

 

 

출처: 우아한테크 유튜브

'Computer Science' 카테고리의 다른 글

[CS] 지연 로딩 / 즉시 로딩  (0) 2025.01.28
[CS] Authentication / Authorization  (0) 2025.01.21
[CS] Singleton Pattern  (0) 2025.01.21
[CS] Cookie / Session  (0) 2025.01.21
[CS] TCP 3-way handshake  (0) 2025.01.21