Domanda Qual è la differenza tra setMaxResults e setFetchSize in org.hibernate.Query?


Qual è la differenza tra setMaxResults e setFetchSize in org.hibernate.Query? Non riesco a capirlo =)


44
2018-05-22 11:49


origine


risposte:


setMaxResults equivale a LIMIT in SQL- sei impostazione del numero massimo di righe desiderato restituito. Questo è un caso d'uso molto comune, naturalmente.

setFetchSize è circa ottimizzazione, che può cambiare Come Hibernate prevede l'invio dei risultati al chiamante (esempio: bufferizzato, in blocchi di dimensioni diverse). setFetchSize NON è implementato da tutti i driver del database.


51
2018-05-22 12:07



setMaxResults limita il numero di risultati che la query otterrà mai.

setFetchSize dice al driver jdbc quante righe restituire in un blocco, per query di grandi dimensioni. Di 'che vuoi 1000 righe. Se si imposta la dimensione del recupero su 100, il db restituirà 100, quindi un altro 100 quando si desidera di più e così via. setFetchSize non farà nulla se il tuo driver non lo supporta.


39
2018-05-22 12:05



Ad esempio, se la tabella ha 100 record, allora

criteria.setMaxResults(25);

recupererà solo 25 record su 100 record e

criteria.setFetchSize(20);

recupererà 20 record ogni volta finché non leggerà tutti i 100 record dalla tabella.


5
2017-08-29 11:46