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

Repetindo consulta ao banco de dados nas fases do ciclo de vida JSF

Desenvolvi uma tela de consulta onde um datatable é preenchido através de consulta ao banco de dados. Este datatable é atualizado periodicamente através do componente poll do primefaces.

A tela funciona corretamente porém a consulta ao banco de dados é executada várias vezes para uma única atualização da tela (observado no console do Eclipse). A consulta foi repetida nas seguintes fases do ciclo de vida JSF: APPLY_REQUEST_VALUES, PROCESS_VALIDATIONS, UPDATE_MODEL_VALUES e PHASE RENDER_RESPONSE.

Existe alguma maneira de executar a consulta ao banco de dados apenas uma vez?

2 respostas
solução!

Olá, precisaria dar uma olhada no codigo dentro do seu bean que faz a chamada pro Dao, Uma possibilidade para isso estar ocorrendo é que você deixou a chamada pro Dao no getter. Uma forma de corrigir isso seria deixar a chamada pro Dao no construtor da classe, e a cada atualização fazer a chamada no metodo que está sendo chamado. Se não for esse o caso poste o código que tentarei lhe ajudar.

Obrigado pela dica, Marcio.

Eu retirei a chamada do DAO do getter e fiz as outras alterações. Essas mudanças deram certo mas não entendi por que o JSF/Primefaces se comporta dessa maneira.

Essa mudança no getter de uma lista deve ser uma regra a ser seguida?

No exemplo da livraria (curso JSF) o getter faz uma chamada para o DAO mas somente se a lista estiver vazia.