Hibernate+postgres批处理更新不起作用



有什么方法可以进行批量更新吗?

我创建一个简单的实体

@Entity
@Getter
@Setter
public class A {
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "A_ID_GENERATOR")
@SequenceGenerator(name = "A_ID_GENERATOR", sequenceName = "a_id_seq")
private Long id;
private String name;
}

下一步,我生成了10000个A类对象,并将它们放入数据库

下一步,我从数据库中获取A的列表,设置新名称并再次保存

@PutMapping
@Transactional
public String updateAllTest(){
var list=aRepository.findAll();
for (int i = 0; i <list.size() ; i++) {
list.get(i).setName("AA"+i);
}
return "OK";
}

我期待什么?我期待hibernate会进行批量更新hibernate做到了——hibernate统计数据显示——它执行了200个批次(批次大小=500(

接下来我转到数据库日志文件,我在那里看到了什么-没有批处理-只有单个更新-10000行

在没有向JDBC驱动程序添加reWriteBatchedInserts=true的情况下,批处理插入看起来是一样的

那么,有没有办法在postgres中使用hibernate或no进行批量更新呢?

要理解的关键是,对多个执行重用同一个服务器端语句句柄是批处理。日志只是告诉你每一次执行,但这并不意味着它很慢。它正在做它应该做的事情。

相关内容

  • 没有找到相关文章

最新更新