Olá Osnir, tudo bem? Peço desculpas pelo demora no retorno! Primeiramente precisamos entender que existem 3 tipos de caches no Hibernate, que é o Cache Nível 1, ou Cache Nível 2, e o Query Cache. O nível 1 é apenas em uma Session
do Hibernate, e não é compartilhado, já o nível 2 sim, assim ambos tem vantagens e desvantagens, o cache de nível 1 é interessante já que é único por seção assim os dados desse cache ficam isolados e é interessantes para aplicações que precisam de maior nível de isolamento dos dados, porém na grande maioria das aplicações o cache de nível 2 é mais indicado já que é compartilhado e vai diminuir consideravelmente o acesso direto ao banco de dados. Agora respondendo sua dúvida, ambos os cache de nível 1 e 2 não fazem o cache das consultas (queries), se fizermos uma consulta personalizada com JPQL ele não vai fazer cache, ele apenas faz cache dos objetos, das entidades que forem sendo retornadas, e para isso é preciso indicar que queremos também o cache de consultas personalizadas com é o caso da busca por produto.
Espero ter ajudado e bons estudos!