1
resposta

Diferença cache segundo nivel de Quieries

Olá, não entendi porque ainda precisamos incluir na typedQuery o valor igual true, sendo que as classes(produtos e loja) já estão configuradas com cache de segundo nivel. Ou seja, qual a diferença do cache da pagina de edicao de produtos com a do filtro da tela de principal

1 resposta

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!