Oi pessoal,
Fiz uma código pequeno para testes, apenas JSF, RichFaces, Hibernate e para minha surpresa (e um certo medinho), utilizando a tag rich:datascroller que faz a paginação, ao ir para a próxima página o Hibernate faz 3 selects, TRÊS!
Resumindo: ao entrar na página ele faz 1 select (normal), ao solicitar a próxima página, ele faz MAIS 3 selects. Creio que seria necessário apenas mais um, ou estou errado?
Vou colocar abaixo meu código para analisarem se existe algum problema na implementação, qualquer sugestão é bem vinda:
ManagedBean: Cliente.java
//...
@Transient
private List<Cliente> clientes;
public List<Cliente> getClientes() {
DaoFactory daoFactory = new DaoFactory();
Dao<Cliente> daoCli = daoFactory.getCliente();
clientes = daoCli.listaTudo();
daoFactory.close();
return clientes;
}
public void setClientes(List<Cliente> clientes) {
this.clientes = clientes;
}
//...
resultado-pesquisa.xhtml
//...
<h:form id="meuForm">
<rich:dataTable value="#{clienteMB.clientes}" var="cli"
id="tabclientes" rows="13" columnClasses="tabela_resultado_consulta">
<f:facet name="header">
<rich:columnGroup>
<h:column>
<h:outputText value="Id" />
</h:column>
<h:column>
<h:outputText value="Nome" />
</h:column>
</rich:columnGroup>
</f:facet>
<h:column>
<h:outputText value="#{cli.id}" />
</h:column>
<h:column>
<h:outputText value="#{cli.nome}" />
</h:column>
<f:facet name="footer">
<rich:datascroller for="tabclientes" maxPages="4" stepControls="show" fastControls="hide" />
</f:facet>
</rich:dataTable>
</h:form>
//...
Saída após solicitar a próxima página:
Hibernate: select this_.id_cliente as id1_0_0_, this_.nome as nome0_0_ from clientes this_
Hibernate: select this_.id_cliente as id1_0_0_, this_.nome as nome0_0_ from clientes this_
Hibernate: select this_.id_cliente as id1_0_0_, this_.nome as nome0_0_ from clientes this_