java - 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);
}
解决方案
最简单的优化如下:将子代累积到某个集合并将它们全部保存(在一次操作中)。由于减少了数据库操作,您将立即获得性能提升。
推荐阅读
- javascript - 导入 JavaScript 原型扩展
- python - 用于显示错误的“if”语句 tkinter.messagebox 不起作用
- sql - SQL 标志行在前一个标志之后 2 小时出现
- python - 如何对 groupby 和 agg (sum and count) 的前三行进行排序?Python - 熊猫
- kubectl - 在这种情况下如何设置 EXTERNAL-IP?
- python - Querying related model-attributes in django
- python - I do understand what I did, now
- reactjs - 使用 Redux 工具包的常见加载状态 reducer
- python - how to rename column label of a Serie (not index label)
- javascript - getElementById 似乎在表单中失败