问题
I have a function which basically returns the entire data from the table.How can i implement batch fetching so that the data will be returned in batches of 60,000 rows at a time.
Will the following logic applicable in this scenario?
http://javainnovations.blogspot.com/2008/07/batch-insertion-in-hibernate.html
回答1:
In hibernate.properties, set the batch size using the parameter
hibernate.jdbc.batch_size= 'your_value'
回答2:
To select data in a batch, you can apply data pagination by setting the initial position & the number of results to be fetched for a query.
for(int i=0; i < MAX_SIZE; i = i + BATCH_SIZE){
List<Object> resultList = entityManager.createQuery(SQL_QUERY).setFirstResult(i).setMaxResults(BATCH_SIZE).getResultList();
//-- Batch Computation
}
I have provided sample code, can modify it accordingly.
回答3:
To select the data with hibernate, in hibernate.properties, set the fetch size using the parameter:
hibernate.jdbc.fetch_size= SOME_VALUE
or in the query:
.setFetchSize(SOME_VALUE)
if you are updating data use: the batch_size
hibernate.jdbc.batch_size= SOME_VALUE
来源:https://stackoverflow.com/questions/9570518/how-to-do-select-the-data-in-batches-using-hibernate