@hudsonjm escreveu:
Estou com um problema na execução de uma lista de objetos, ao processar essa lista de objetos
queria salvar os objetos da lista em lote assim como diz a documentação do hibernate:
Session session = sessionFactory.openSession();
Transaction tx = session.beginTransaction();
for ( int i=0; i<100000; i++ ) {
Customer customer = new Customer(.....);if ( i % 20 == 0 ) { //20, same as the JDBC batch size //flush a batch of inserts and release memory: session.flush(); session.clear(); } processarCustomer(session, customer);
}
tx.commit();
session.close();private processarCustomer(Session session, Customer customer){
try{session.save(customer); }catch(Exception e){ //Caso ocorra alguma falha em persistir o objeto não falhar o lote de procesasmento //Continuar processeguindo o processamento dos demais customers sem dar rollback na transacao }
}
Porém se eu realizar dessa forma, caso ocorra um erro na hora de gravar um objeto entre o lote, só consegui
dando um rollback na transacao inteira, perdendo os outros dados já gravados.
Queria algo para continuar processando o lote, mas ignorar um dos objetos com falha entre esse lote.Se eu abrir uma transação para cada objeto, o processamento fica muito lento, algumas sugestões?!
Mensagens: 2
Participantes: 2