
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 와 매칭되는 조회 요청이 다시 수행될 경우 매칭되는 엔티티를 다시 반환해준다.
그래서 이미 조회한 엔티티에 대해 부담없이 다시 조회를 해도 괜찮다.