1차캐시
•
영속성 컨텍스트 내부에 있다.
•
엔티티 매니저로 조회하거나 변경하는 모든 엔티티는 1차캐시에 저장된다.
•
트랜잭션을 커밋하거나 플러시를 호출하면, 1차캐시에 있는 엔티티의 변경 내역을 데이터베이스에 동기화한다.
JPA를 Spring Framework같은 컨테이너 위에서 실행하면 트랜잭션을 시작할 때, 영속성 컨텍스트를 생성하고, 트랜잭션을 종료할 때 영속성 컨텍스트도 종료한다. 1차캐시는 끄고 켤 수 있는 옵션이 아니다. 영속성 컨텍스트 자체가 사실상 1차캐시다.
2차캐시
애플리케이션에서 공유하는 캐시를 JPA는 공유캐시라 하는데, 일반적으로 2차캐시라 부른다.
2차캐시를 적용하면 엔티티 매니저를 통해데이터를 조회할 때 우선 2차 캐시에서 찾고, 없으면 DB에서 찾는다. 따라서 적절히 활용하면 DB조회 횟수를 획기적으로 줄일 수 있다.