Bom dia galera.
Numa minha aplicação, utilizo os métodos setMaxResults() e setFirstResult() para criar a paginação de uma consulta que retorna em torno de 3 mil registros.
Hoje acabou surgindo uma dúvida na empresa: quando utiliza-se esses métodos, o Hibernate guarda os 3 mil registros e mostra-os de acordo com o valor dos métodos (indo somente uma vez ao banco) ou acaba indo toda vez ao banco para pegar somente os registros necessários?
Utilizo Oracle.
Aguardo suas opiniões… valeu!
No caso de utilizar o: setMaxResults() => Que seta o numero máximo de resultados a retornar
e o setFirstResult() => Que seta a posição do primeiro resultado a retornar
Acredito eu, que ele busca de acordo com o que foi setado, indo mais de 1x no banco !!
Pois é, cara, era isso que eu pensava inicialmente.
No entanto, fiquei com a dúvida pois acho que isso não é possível no Oracle. No MySQL com certeza seria isso, visto que existem as propriedades LIMIT e OFFSET, que fazem exatamente o mesmo. No Oracle, entretanto, só é possível simular o LIMIT (através do ROWNUM), mas não o OFFSET (até onde sei).
Por isso acho que ele deve ir no banco uma vez, guardar todos os registros, e aí “brincar” com os parâmetros que passamos… O que acham?
Cara funciona sim…
Se não, cole o Stack trace aqui
[quote=psyltrance]Cara funciona sim…
Se não, cole o Stack trace aqui[/quote]
Sim, eu sei que funciona… minha dúvida é saber como ele faz.
Ah tah…
Veja o sql que ele gera !!
