public List<DishResponseDTO> getAll() {
List<Dish> dishlsit = dishRepository.findAll();
return dishlsit.stream()
.map(DishMapper::toDishResponseDTO)
.collect(Collectors.toList());
}
Я его в @SpringBootTest вызываю, но с transactional
@Test
@Transactional
public void get() {
System.out.println(dishService.getAll());
System.out.println(dishService.getAll());
System.out.println(dishService.getAll());
}
Разве он не выполняется в одной сессии, если стоит @Transactional?
Почему 3 вызова провоцируют 3 обращения к БД, я думал, что кэш первого уровня hibernate должен решать эти вопросы, если вызовы в границах сессии
Попробуй заменить finfAll на find. Если сработает, то значит для findAll не работает кеш первого уровня. https://stackoverflow.com/questions/39482861/use-of-hibernate-first-level-cache
Я так понимаю, что кэш первого уровня работает только для отельных объектов
Ну вот по ссылке тоже самое написано. Но ссылку в доке не нашёл =(
Обсуждают сегодня