我有一个使用弹簧数据需要持久保存的实体列表。其中有些已经有ID,有些则没有。在阅读了其他类似的问题之后,我意识到存储库方法save(Iterable<S> iterable)
在内部使用ArrayList,因此结果始终是相同的顺序。但是让我感到紧张的是,它在实现中的每个循环中使用,并一一保存实体:
@Transactional
public <S extends T> List<S> save(Iterable<S> entities) {
List<S> result = new ArrayList();
if (entities == null) {
return result;
} else {
Iterator var3 = entities.iterator();
while(var3.hasnext()) {
S entity = var3.next();
result.add(this.save(entity));
}
return result;
}
}
由于我任务的特殊性,我绝对需要以相同的顺序获得结果,我的实际任务是数据库请求优化,并且我一直认为,当我将集合传递给save方法时,它将对hibernate使用批处理操作,但是现在我想知道这是否是真的。
如果不是这样,是否甚至可以用spring数据执行BATCH插入/更新操作,并以与我传入然后传递的顺序相同的顺序获取结果实体,或者我只是在想像呢?