본문 바로가기

프로그래밍

1차 캐시, 영속성 컨텍스트는 어디에 있나?

JPA의 구현체 중 하나인 하이버네이트(Hibernate)를 기준으로 설명한다.

하이버네이트에는 영속성 컨텍스트(PersistenceContext) 인터페이스가 존재한다.

 

이 인터페이스의 구현체를 찾아보면 StatefulPersistenceContext 라는 클래스가 존재한다.

이게 우리가 찾는 영속성 컨텍스트다. 1차 캐시로도 불려진다.

 

StatefulPersistenceContext에는 엔터티를 관리하기 위한 수많은 컬렉션들이 존재한다.

 

Id 생성 전략이 IDENTITY인 엔티티를 persist()하면, 해시맵인 entitiesByKey에 저장된다.