java - Batch insertion using hibernate native queries -
below code executing insert query in iterations :
session = sessionfactory.getcurrentsession(); (samplebo items : listctn) { try { query = session .createsqlquery("insert xyx values(.......) items="+items.getitem()); objlog.info("query executed is" + query); query.executeupdate(); result = "success"; } here queries executing 1 after other. how can execute queries in batches?
first of all, if want use correct jdbc statements batching in hibernate, have set batch size parameter in hibernate's configuration. per hibernate's documentation, "recommended values between 5 , 30":
hibernate.jdbc.batch_size=30 then, in loop, have flush session every x inserts (x should match number set batch size). should this:
int count = 0; (samplebo items : listctn) { query = session .createsqlquery("insert xyx values(.......) items="+items.getitem()); objlog.info("query executed is" + query); query.executeupdate(); result = "success"; if (++count % 30 == 0){ session.flush(); session.clear(); } } //optional - i've seen issues in hibernate caused not flushing data last iteration, example - last 10 inserts. session.flush(); session.clear(); see also:
https://www.tutorialspoint.com/hibernate/hibernate_batch_processing.htm https://docs.jboss.org/hibernate/orm/4.3/manual/en-us/html/ch15.html
Comments
Post a Comment