Если вы выполняете вызов БД в цикле for
, он достигнет 1 млн. ДБ, и фреймворк не сможет этого избежать, если вы не используете кеш.Вместо этого следует использовать for(loop 1million ids){ SomeRepo.findById(Long Id);}
. Вы должны использовать findByIdIn(List<long> ids)
и сделать один вызов дб (при необходимости используйте пагинацию идентификаторов)
@Query
сделать то же самое, вы можете использовать то, что вывроде, но может случиться, что имя метода слишком длинное, например:
List<Person> findByPersonAddressNameAndPersonAddressNumberOrderByPersonAddressNameDesc(String addressName, Long addressNumber)
, и в этом случае вы можете выбрать сокращенное имя для вашего метода с аннотацией запроса
@Query(from Person where person.address.name = :name and person.address.number = :number order by person.address.number desc);
public List<Person> findByAddressAndNumber(String name, Long number)