담비의 개발블로그

[JPA]1차캐시/2차캐시 본문

CS(컴퓨터과학)

[JPA]1차캐시/2차캐시

담비12 2024. 7. 28. 18:35

 

 

 

네트워크를 통해 DB에 접근하는 시간 비용은 애플리케이션 서버에서 내부 메모리에 접근하는 비용보다 훨씬 비싸다.
따라서 조회한 데이터를 메모리에 캐시해서 DB접근횟수를 줄이는 것이 효율적이다. 이 효율을 위해 1차 캐시와 2차 캐시를 사용하는 것이다.

 

 

1차 캐시

 

1차 캐시는 영속성 컨텍스트 내부에 엔티티를 보관하는 저장소를 말하며, 엔티티 매니저 내에서 운영되는 캐시이다. 엔티티 매니저의 생명주기 동안 해당 캐시가 유지된다. 

 

영속성 컨텍스트

엔티티를 영구 저장하는 환경이라는 뜻이다. 애플리케이션과 데이터베이스 사이에서 객체를 보관하는 가상의 데이터베이스 같은 역할을 한다. 엔티티 매니저를 통해 엔티티를 저장하거나 조회하면 엔티티 매니저는 영속성 컨텍스트에 엔티티를 보관하고 관리한다.

 

엔티티매니저

엔티티 매니저는 JPA에서 데이터베이스와 상호작용하기 위해 사용되는 핵심 인터페이스이다. 엔티티 매니저는 엔티티의 생명주기를 관리하고, 데이터베이스에서 데이터를 조회하거나 저장하는 등의 작업을 수행한다.



특징
엔티티 매니저 범위: 엔티티 매니저 인스턴스 내에서만 유효하다.
자동 관리: 별도의 설정이나 관리가 필요 없다.
트랜잭션 단위: 하나의 트랜잭션 내에서 사용된다.

 

사용 예시
엔티티 조회: 동일한 트랜잭션 내에서 동일한 엔티티를 여러 번 조회할 때 데이터베이스에 매번 접근하지 않고 1차 캐시에서 데이터를 가져온다.

 

 

 

2차 캐시

 

2차 캐시는 애플리케이션 전체에서 공유되는 캐시이다. 이는 엔티티 매니저 팩토리(Entity Manager Factory) 수준에서 관리되며 여러 엔티티 매니저 인스턴스 간에 공유된다. 2차 캐시는 해당 엔티티의 복사본을 만들어 1차 캐시에 반환하며, 이는 동시성을 극대화시키기 위함이다. 2차 캐시를 적용하면 엔티티 매니저를 통해 데이터를 조회할 때 우선 2차 캐시에서 찾고 없으면 데이터베이스에서 찾는다. 2차 캐시를 적정히 활용하면 데이터베이스 조회 횟수를 획기적으로 줄일 수 있다. 

 

특징

애플리케이션 범위: 여러 엔티티 매니저 간에 공유된다.

명시적 설정 필요: JPA 제공자 또는 외부 캐시 솔루션을 통해 구성해야 한다.

지속성 가능: 외부 저장소를 사용하여 애플리케이션 재시작 시에도 데이터를 유지할 수 있다.

 

사용 예시

자주 조회되는 데이터 캐싱: 애플리케이션에서 자주 조회되는 데이터를 2차 캐시에 저장하여 데이터베이스 접근을 최소화한다.

2차 캐시 적용 전

 

 

2차 캐시 적용 후

 

'CS(컴퓨터과학)' 카테고리의 다른 글

[CS]RDBMS(관계형 데이터베이스)/ nosql의 차이  (0) 2025.01.09
JDBC란?  (0) 2024.08.08
개발 방법론&테스트 종류  (0) 2024.07.10
ORM이란?  (0) 2024.07.08
CORS란?  (0) 2024.07.03