Em que cenários é recomendável utilizar JSF. Na empresa em que trabalho temos um sistema de controle de produção desenvolvido com JSF, mas temos muitas reclamações de lentidão por parte dos usuários, é fato que JSF tem problemas de performance?
Em que cenários é recomendável utilizar JSF. Na empresa em que trabalho temos um sistema de controle de produção desenvolvido com JSF, mas temos muitas reclamações de lentidão por parte dos usuários, é fato que JSF tem problemas de performance?
Jsf, aplicações cheias de formulários, onde a cara do sistema não muda e você não precisa ter controle fino nem do html e nem dos requests, ideal para sistemas de intranet e vc tem pressa pra entregar.
excetuando-se websites onde o numero de requisições é muito grande, jsf atende bem em se tratando de sistemas, quantas pessoas utilizam o sistema simultaneamente? 500 pessoas? mesmo assim era para o JSF está respondendo bem e provavélmente como em muitos outros casos por ai, provavélmente o JSF está levando uma culpa que não é dele
Na maioria dos casos o gargalo está no Hibernate/JPA e não é culpa do hibernate também:
1-habilite no log as queries que o hibernate está disparando, provavelmente vc vai ter uma surpresa desagradável, o hibernate custuma por padrão trazer todos os relacionamentos ManyToOne, isso pode trazer problemas pois se vc tem uma tela de listagem da entidade A e quer exibir apenas 5 campos da entidade A mas a entidade A está ligada à entidade B,C e D o hibernate vai trazer a P toda
2- certifica que as coleções estão Lazy, pois quando estão como eager vai trazer a P das coleções tudo tambem, então se vc tem a entidade A que tem uma coleção F, e A tem 10000 itens ele vai carregar A, vai carregar os 10000 itens F e se F tiver relacionamentos ele ainda vai buscar os relacionamentos de F
3- Verifica se não está com o famoso problema do n+1
4-pagine suas tabelas com paginação de banco de dados, se o usuário precisa ver apenas 10 registros por vez não adianta nada carregar 10000 registros na memoria e fazer paginação apenas visual de 10 em 10, faça com que cada querie traga apenas os 10 registros da página atual
5-nunca coloque lógicas envolvendo banco de dados nos métodos getters do seu managed bean, ele pode disparar a mesma querie uma porrada de vezes, pois o jsf acessa os getters varias vezes pra poder propagar o estado da página
6-quando der, utiliza alguma estrategia de cache pra evitar idas desnecessárias ao banco
tratando esses 6 pontos ai acho que tua aplicação melhora, bom eu tou chutando, vc vê e depois volta aqui pra dizer se deu certo
no item 1 faltou eu dizer pra planejar as queries e trazer somente os dados que serão necessários