Inserção em lotes

1 resposta
A

Estou precisando realizar uma inserção em lote com Hibernate, em jdbc é bastante simples, mas não ví como realizar com Hibernate. Segue abaixo o código utilizado para jdbc.

PreparedStatement query = connection.prepareStatement("insert into tlog_ns (dia_ocorrencia, hor_ocorrencia, qtd_ocorr_aten, qtd_ocorr_geradas,num_version, key_cenario, key_localidade, key_polo, key_tipo_servico) values (?,?,?,?,?,?,?,?,?)");
					
				for(LogNS data : list){
					query.setInt(1, data.getDia_ocorrencia().intValue());
					query.setInt(2, data.getHora_ocorrencia().intValue());
					query.setInt(3, data.getQtd_ocorr_atendidas().intValue());
					query.setInt(4, data.getQtd_ocorr_gerada().intValue());
					query.setInt(5, 1);
					query.setInt(6, data.getKey_cenario().intValue());
					query.setInt(7, data.getKey_localidade().intValue());
					query.setInt(8, data.getKey_polo().intValue());
					query.setInt(9, data.getKey_tipo_servico().intValue());
					query.addBatch();
				}
				
				query.executeBatch();
				query.clearBatch();
				query.close();

1 Resposta

BMuniz

andersonfdb,

Segue a orientação da documentação do Hibernate 3.3.2.GA

Session session = sessionFactory.openSession();
Transaction tx = session.beginTransaction();
for ( int i=0; i<100000; i++ ) {
Customer customer = new Customer(.....);
session.save(customer);
if ( i % 20 == 0 ) { //20, same as the JDBC batch size
//flush a batch of inserts and release memory:
session.flush();
session.clear();
}
}
tx.commit();
session.close();

[ ]'s

Criado 2 de janeiro de 2012
Ultima resposta 5 de jan. de 2012
Respostas 1
Participantes 2