我试图理解为什么saveAll具有比Spring Data存储库中保存更好的性能.我使用的是CrudRepository从中可以看出这里.
为了测试我创建并添加了10k个实体,它们只有一个id和一个随机字符串(对于基准测试我保持字符串是一个常量)到列表中.迭代我的列表并调用.save每个元素,花了40秒..saveAll在2秒内完成相同的整个列表调用..saveAll用甚至30k元素调用花了4秒钟.我确保在执行每个测试之前截断我的表.即使将.saveAll电话拨打到50个子列表,也需要10秒才能获得30k.
.saveAll整个列表的简单似乎是最快的.
我试图浏览春数据源代码,但是这是我发现的唯一有价值的东西.在这里,它似乎.saveAll只是迭代整个,Iterable并.save像我一样调用每一个.那怎么快得多呢?它是在内部进行一些事务性批处理吗?