JPA 1차 캐시의 ID 조회하는 findByIdIn과 findById의 관계

궁금하면 500원·2024년 7월 27일
0

미생의 개발 이야기

목록 보기
10/58

findByIdIn(1, 2, 3) 으로 이미 조회를 했는데,

같은 트랜잭션의 다른 컨텍스트에서 이미 조회한 Id 에 대한 findById 를
다시 수행해야 하는 케이스가 생겼다.

List<Long> ids = Arrays.asList(1L, 2L, 3L);
List<Entity> myEntities = repo.findByIdIn(ids);
...
Entity cacheEntity = repo.findById(1L); // 뭐야??

이 경우, 1L 로 조회된 Entity 에 대해선 캐시를 통한 반환이 되는 걸까?

정답은 "yes" 이다.

JPA 1차 캐시에선 IN 절로 조회 시, 해당 엔티티들의 ID를 기록하고 있다.

그래서 캐시에 저장된 ID 와 매칭되는 조회 요청이 다시 수행될 경우 매칭되는 엔티티를 다시 반환해준다.

그래서 이미 조회한 엔티티에 대해 부담없이 다시 조회를 해도 괜찮다.

profile
꾸준히, 의미있는 사이드 프로젝트 경험과 문제해결 과정을 기록하기 위한 공간입니다.

0개의 댓글