Blog

[Spring]34_3 JPA 1차캐시, 2차캐시

Author
Summary
1차캐시? 2차캐시?? 영속성하고 어떤 관계인가
Category
Study
Tags
Spring
Favorite
Memory Date
2023/09/05
Cross Reference Study
Related Media
Related Thought
Related Lessons
tag
날짜
작성자
진행상황
진행 전
태그구분
6 more properties
1차캐시
영속성 컨텍스트 내부에 있다.
엔티티 매니저로 조회하거나 변경하는 모든 엔티티는 1차캐시에 저장된다.
트랜잭션을 커밋하거나 플러시를 호출하면, 1차캐시에 있는 엔티티의 변경 내역을 데이터베이스에 동기화한다.
JPA를 Spring Framework같은 컨테이너 위에서 실행하면 트랜잭션을 시작할 때, 영속성 컨텍스트를 생성하고, 트랜잭션을 종료할 때 영속성 컨텍스트도 종료한다. 1차캐시는 끄고 켤 수 있는 옵션이 아니다. 영속성 컨텍스트 자체가 사실상 1차캐시다.
2차캐시
애플리케이션에서 공유하는 캐시를 JPA는 공유캐시라 하는데, 일반적으로 2차캐시라 부른다. 2차캐시를 적용하면 엔티티 매니저를 통해데이터를 조회할 때 우선 2차 캐시에서 찾고, 없으면 DB에서 찾는다. 따라서 적절히 활용하면 DB조회 횟수를 획기적으로 줄일 수 있다.