Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

Habilitei o Cache e agora não carrega mais os dados do banco

Na aula de Paginação e Cache, habilitei o cache conforme exemplo do professor, assim ao recarregar a página com F5 não é feito novamente uma consulta no banco de dados. Porém, ao alterar um registro no banco, mesmo recarregando a página não recebe mais a informação atualizada. Como contornar isso? Ps. tentei com Ctrl+F5 e tive o mesmo resultado.

4 respostas

Olá Henrique! Tente parar o servidor e reiniciar ele em seguida, isso esvazia o cache e quando você acessar a URL pela primera novamente vez ele vai fazer a consulta e cachear de novo. Chegou habilitar os dois comando abaixo pra acompanhar e confirmar se ele está fazendo a consulta no banco de dados?

spring.jpa.properties.hibernate.show_sql=true
spring.jpa.properties.hibernate.format_sql=true

Olá Ailton, então, habilitei esses comandos para verificar o SQL. Sem parar o servidor e subir novamente não traz os pedidos atualizados. O que estou fazendo:

  1. Navegador mostra os pedidos
  2. Altero a descrição de um deles pelo banco de dados
  3. Volto ao navegador e dou F5 para recarregar a página
  4. Os pedidos são exibidos exatamente como estavam no passo 1. Sem a alteração que fiz no banco.

Não carrega mais do banco agora, sem que eu reinicie o servidor.

solução!

O objetivo do cache é esse mesmo, evitar novas consultas desnecessárias no banco de dados e armazenar as informações em cache, com isso ele não sabe que você alterou os dados direto no banco O cache só vai recarregar os pedidos atualizados se as alterações dos dados forem executadas através de um método anotado com @CacheEvict no controller. Essa anotação tem que ser colocada em todos os métodos que alteram os dados que foram armazenados pelo seu cache, por exemplo, no método que altera, inclui e exclui os pedidos. Lembre-se de colocar no value da anotação, o nome do cache que você quer esvaziar. Com isso, quado você acessar a lista de pedidos novamente, ele irá recarregar a lista de pedidos atualizada e salvar no cache novamente.

Na dúvida, assiste essa aula aqui que é top, explica bem facil isso tudo: https://cursos.alura.com.br/course/spring-boot-seguranca-cache-monitoramento/task/55838

Isso mesmo Ailton, agora vendo a aula que você enviou pude compreender realmente como funciona o cache, porque nesta aula atual (deste curso aqui) o instrutor não mencionou que deveria ser feito a limpeza do cache com a anotação @CacheEvict. Muito obrigado pela resposta!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software