JPA의 캐시와 @Transactional(readOnly=true) OSIV의 관계
2022. 12. 29. 10:23
카테고리 없음
1차 캐시 와 스냅샷, 2차 캐시 스냅샷 영속성 컨텍스트가 생성될 때, 향후 변경 감지를 위해서 원본을 복사해서 만들어둔 객체 1차 캐시 단순히 엔티티를 캐싱해두고 같은 key이면 디비로 재요청하지 않기 위한 것이다. 그럼 디비에서 값이 바뀌면 어떻게하나? 라는 생각이 들 수 있지만, 오히려 디비가 변경되었어도 같은 key를 조회했을 때는 같은 값을 가져와야 혼란이 적기 때문에 전혀 문제가 되지 않는다. 즉, Repeatable read 등급의 트랜잭션 격리 수준을 디비가 아닌 애플리케이션 차원에서 제공한다는 장점이 있다. 이를 동일성(주소가 같은 것)이라고 한다. 2차 캐시 1차 캐시가 commit, flust를 하거나 osiv를 사용할때 까지 캐시를 유지한다면, 2차 캐시는 애플리케이션이 종료될 때까..