我有一个来自REST服务的超大型JSON。 50-100 个对象,所有这些对象都有额外的 # nr 子对象。它的处理是直截了当的。
在数据库中查找现有对象或创建新对象。使用资源库添加值。保存对象。对于子对象,还有将其添加到父实体的额外步骤。
处理它需要 60 多秒。有没有办法提高它的速度?
代码外观示例:
for (Parent parent: parentInput.getParents()) {
ParentEntity parentEntity =
initParentEntity(parent.getParentRefNr());
parentEntity .setCpvCode(parent.getCpvCode());
parentEntity .setCpvName(parent.getCpvName());
....
parentMChildRepository.deleteByParent(parentEntity.getId());
for (ChildInput childInput: parent.getChildInputList()) {
ChildEntity childEntity = childRepository.findByErhrId(childInput
.getChildERHRId());
if (childEntity == null) {
childEntity = new ChildEntity ();
}
childEntity .setErhrId(childInput
.getChildERHRId());
childEntity .setFirstName(childInput.getFirstName());
childEntity .setLastName(childInput.getLastName());
childEntity .setIdentityCode(childInput.getIdentityCode());
....
childEntity = childRepository.save(childEntity );
parentEntity
.addChildEntity(childEntity);
}
parentRepository.save(parentEntity);
}
最简单的优化如下:将子项累积到某个集合中,并将它们全部批量保存(在一个操作中)。由于减少了数据库操作,您将立即获得性能提升。