Spring JPA事务如何在提交前存储数据



假设我需要创建100.000条记录,而不是.save()条记录。所有记录应保存在一起,并且只允许一个事务。显然,这是一个问题,程序可能会耗尽内存。但是,如果我在同一个事务中做同样的工作,但要分块做,会发生什么呢?每次迭代1000条记录,然后我保存它们。它能解决问题吗?直觉上我认为不会,设计是错误的。I.save()之后实体会发生什么?JPA是否仍然保留对所有保存的实体的引用?我在哪里可以阅读更多关于这个主题的内容?谢谢

但是如果我在同一事务中做相同的工作,但要分块进行,会发生什么?每次迭代1000条记录,然后我保存它们。它能解决问题吗?

如果您使用以下方法,它将解决问题:

while (hasNextBatch()) {
saveBatch();
entityManager.flush();
entityManager.clear();
}

在I.save((之后实体会发生什么?JPA是否仍然保留对所有保存的实体的引用?

是(除非执行上述操作(。

在哪里可以阅读有关此主题的更多信息?

例如,在这里。

最新更新