Java 弹簧 DTO -> 实体性能改进



我有一个来自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);
    }

最简单的优化如下:将子项累积到某个集合中,并将它们全部批量保存(在一个操作中)。由于减少了数据库操作,您将立即获得性能提升。

最新更新