Bom dia!
Estou com um problema ao salvar dados no banco.
Tenho um serviço e ao salvar demora demais se existirem muitos registros para serem salvos…
Tenho um for que percorre todos os registros de uma grid, e nesse caso existem 1000 (mil) itens e cada um deles
possui 6 atributos em media… ou seja seriam 6 mil registros ao salvar.
Se a grid possui até 100 registro o “save” é até aceitável, porem quando aumenta fica lento demais…
Vou colocar um trecho do código onde é feito o save…
Se alguem tiver alguma dica de como melhorar fico agradecido.
[code] for (Object obj : array) {
JSONObject o = (JSONObject) obj;
System.out.println("idInvRepSeq: " + o.get(“idInvRepSeq”));
System.out.println("seqNumber: " + o.get(“seqNumber”));
System.out.println("seqStatus: " + o.get(“seqStatus”));
System.out.println("serial: " + o.get(“serial”));
System.out.println("causeId: " + o.get(“causeId”));
System.out.println("troubleTypeId: " + o.get(“troubleTypeId”));
session.beginTransaction();
update = session.update(tbSequencerQualityReport);
invRepSeq = o.get("idInvRepSeq") != null ? o.get("idInvRepSeq").toString() : null;
seqStatus = o.get("seqStatus") != null ? convert(o.get("seqStatus").toString()) : null;
seqNumber = o.get("seqNumber") != null ? o.get("seqNumber").toString() : null;
serial = (o.get("serial") != null && !StringUtils.isEmpty(o.get("serial").toString().trim()) )? o.get("serial").toString() : null;
troubleType = o.get("troubleTypeId") != null ? convert(o.get("troubleTypeId").toString()) : null;
troubleCause = o.get("causeId") != null ? convert(o.get("causeId").toString()) : null;
update.addSet(tbSequencerQualityReport.invRepSeq, invRepSeq);
update.addSet(tbSequencerQualityReport.seqStatus, seqStatus);
update.addSet(tbSequencerQualityReport.seqNumber, seqNumber);
update.addSet(tbSequencerQualityReport.serial, serial);
update.addSet(tbSequencerQualityReport.troubleTypeId, troubleType);
update.addSet(tbSequencerQualityReport.causeId, troubleCause);
update.where(WhereConditions.and(WhereConditions.equal(tbSequencerQualityReport.seqNumber, seqNumber), WhereConditions.equal(
tbSequencerQualityReport.qltRecRepId, beanRecQualityReport.getIdRecQltReport())));
update.execute();
session.commit();
}[/code]
Só pra lembrar, se o save tiver mil linhas de registro, ele percorre este for mil vezes…
Obrigado…