Java spring DTO->改善实体性能

时间:2019-01-31 11:58:41

标签: java spring

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

1 个答案:

答案 0 :(得分:0)

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