패스잇
백엔드 개발 · 심화

JPA 2차 캐시(Second Level Cache)란 무엇이며, 1차 캐시와의 차이점은 무엇인가요?

힌트 · 캐시 범위, 동시성, 설정 방법을 비교해보세요.

영속성 컨텍스트공유 캐시EntityManagerFactory클러스터링캐시 전략

모범답안

JPA 2차 캐시는 EntityManagerFactory 레벨에서 관리되는 공유 캐시입니다. 1차 캐시는 영속성 컨텍스트, 즉 EntityManager 내부에 존재하며 트랜잭션 범위 내에서만 유효합니다.

가장 큰 차이점은 캐시 범위입니다. 1차 캐시는 EntityManager마다 독립적으로 존재하지만, 2차 캐시는 여러 EntityManagerFactory 인스턴스 간에 공유될 수 있습니다. 따라서 2차 캐시는 애플리케이션 전체에서 자주 사용되는 데이터를 캐싱하여 성능을 향상시키는 데 유용합니다.

동시성 측면에서 1차 캐시는 단일 트랜잭션 내에서만 사용되므로 동시성 문제가 발생하지 않지만, 2차 캐시는 여러 트랜잭션에서 동시에 접근할 수 있으므로 적절한 캐시 전략(예: 읽기-쓰기 캐시, 트랜잭션 캐시)을 선택해야 합니다.

2차 캐시를 사용하려면 persistence.xml 또는 application.properties/yml 파일에서 캐시 프로바이더를 설정하고, 캐싱할 엔티티에 @Cacheable 어노테이션을 추가해야 합니다. 클러스터링 환경에서는 캐시 서버를 구성하여 캐시 데이터를 공유할 수도 있습니다.

읽었다면, 이제 직접 답해볼 차례예요

패스잇 앱에서 이 질문에 말로 답하면 AI가 꼬리질문까지 이어가며 1:1 코칭합니다.

함께 보는 JPA / ORM 면접 질문

← JPA / ORM 면접 질문 전체 보기