Paginação no hibernate  XML
Índice dos Fóruns » Arquitetura de Sistemas
Autor Mensagem
fabioissamu
JavaChild

Membro desde: 21/02/2007 16:48:46
Mensagens: 145
Localização: Rio de Janeiro
Offline

Você poderia postar qual foi a SQL gerada pelo Hibernate?

Acredito também que haja um cache e um proxy, ou seja, não é sempre que o banco de dados será acionado.

Outro dia estava pensando em uma forma para fazer estas paginações.
Se vc retornar uma consulta com 1.000.000 de resultados a formula para páginas seria
numeroDePaginas=totalDeRows/resultadoPorPagina;
se vc mostrar 10 resultados por página seriam 100.000 páginas
o que não caberia na tela (pagina 1,2,3 ... 100.000)

E normalmente exibimos poucas páginas umas 10 com setas para mais e menos, como o google.

Pensando desta forma vc poderia limitar os resultados para no máximo 100 a partir do 0
na primeira consulta.

E conforme o usuário fosse paginando vc retornaria os 100 depois do id X.
Criando um where com criteria, ou qq outra coisa.

This message was edited 1 time. Last update was at 30/04/2009 15:14:19


se tanto faz, então escolha o melhor.
http://www.goals.com.br
renatocustodio
JavaGuru
[Avatar]

Membro desde: 04/03/2008 07:21:24
Mensagens: 249
Offline

No SQL gerado ele é mais ou menos um:


Isso supondo que ele está com Max em 9 e first em 27.
[WWW]
renatocustodio
JavaGuru
[Avatar]

Membro desde: 04/03/2008 07:21:24
Mensagens: 249
Offline

fabioissamu wrote:Você poderia postar qual foi a SQL gerada pelo Hibernate?

Acredito também que haja um cache e um proxy, ou seja, não é sempre que o banco de dados será acionado.

Outro dia estava pensando em uma forma para fazer estas paginações.
Se vc retornar uma consulta com 1.000.000 de resultados a formula para páginas seria
numeroDePaginas=totalDeRows/resultadoPorPagina;
se vc mostrar 10 resultados por página seriam 100.000 páginas
o que não caberia na tela (pagina 1,2,3 ... 100.000)

E normalmente exibimos poucas páginas umas 10 com setas para mais e menos, como o google.

Pensando desta forma vc poderia limitar os resultados para no máximo 100 a partir do 0
na primeira consulta.

E conforme o usuário fosse paginando vc retornaria os 100 depois do id X.
Criando um where com criteria, ou qq outra coisa.


Na verdade a lógica da paginação está prontinha, e está funcionando perfeitamente, com essas setinhas, os pontinhos e tal. Mas o que me assustou foi o sql gerado que deu a impressão de que ele trouxe muita coisa do banco, mas jogou dentro do meu list apenas dentro da paginação que eu estabeleci.
[WWW]
fabioissamu
JavaChild

Membro desde: 21/02/2007 16:48:46
Mensagens: 145
Localização: Rio de Janeiro
Offline

Parece codigo de SQL Server,
talvez esteja trazendo mais coisas do que o necessário.
Não lembro os comandos nativos de SQL Server, mas tinha alguma coisa no final do comando, um rowcount qq coisa do genero.

Vc pode rodar a consulta no query analizer ou outro e ver?

Depois posta o resultado, é legal saber se tem alguma penalidade.

Ultimamente uso mais MySql.

se tanto faz, então escolha o melhor.
http://www.goals.com.br
renatocustodio
JavaGuru
[Avatar]

Membro desde: 04/03/2008 07:21:24
Mensagens: 249
Offline

fabioissamu wrote:Parece codigo de SQL Server,
talvez esteja trazendo mais coisas do que o necessário.

Sim, foi o que eu disse no meu primeiro post...

fabioissamu wrote:
Vc pode rodar a consulta no query analizer ou outro e ver?

Acho que não há necessidade. Com esse sql ele está trazendo 36 registros em vez de 9, que seria o ideal no meu caso...

fabioissamu wrote:
Ultimamente uso mais MySql.


Eu tbm prefiro o MySQL, mas isso não é uma escolha minha.

Vou continuar pesquisando uma solução.
[WWW]
 
Índice dos Fóruns » Arquitetura de Sistemas
Ir para:   
Powered by JForum 2.1.8 © JForum Team