我有以下代码:
private void sendList(List<Data> myData) {
myData.forEach(x -> {
sendData(x);
})
}
@Transactional
private void sendData(Data myData){
//do some changes in myData object and inserts into table
}
目前,它在每个数据对象的插入完成后提交。
但是,我想提交每500条记录。
可以这样做吗?
1条答案
按热度按时间wqsoz72f1#
首先,不需要循环来保存数据。使用
saveAll
相反(这是积垢的力量)。其次,应该添加批处理。默认情况下,它不会打开。因此,必须向application.properties添加一些参数:
第一个属性告诉hibernate批量收集500个插入。这个
order_inserts
属性告诉hibernate花时间按实体对插入进行分组,从而创建更大的批。来源