정의
엔티티 객체를 관리하는 메모리상의 저장소로, 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 |