首页 > 解决方案 > Java spring DTO -> 实体性能改进

问题描述

我有一个来自 REST 服务的超大 JSON。50-100 个对象,它们都有额外的 # nr 个子对象。它的处理是直截了当的。

在数据库中查找现有对象或创建新对象。使用 setter 添加值。保存对象。对于子对象,还有一个额外的步骤可以将其添加到父实体。

处理它需要 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);
    }

标签: javaspring

解决方案


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


推荐阅读