我有一个来自REST服务的超大型JSON。 50-100个对象全部具有附加的#nr个子对象。它的处理很简单。
在数据库中查找现有对象或创建新对象。使用设置器添加值。保存对象。有了subObjects,还有一个附加步骤将其添加到父实体中。
处理时间超过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);
}
答案 0 :(得分:0)
最简单的优化如下:将子级累积到某个集合中,然后将它们全部批量保存(一次操作)。由于减少了数据库操作,您将立即获得性能提升。