假设我需要创建100.000条记录,而不是.save()
条记录。所有记录应保存在一起,并且只允许一个事务。显然,这是一个问题,程序可能会耗尽内存。但是,如果我在同一个事务中做同样的工作,但要分块做,会发生什么呢?每次迭代1000条记录,然后我保存它们。它能解决问题吗?直觉上我认为不会,设计是错误的。I.save()
之后实体会发生什么?JPA是否仍然保留对所有保存的实体的引用?我在哪里可以阅读更多关于这个主题的内容?谢谢
但是如果我在同一事务中做相同的工作,但要分块进行,会发生什么?每次迭代1000条记录,然后我保存它们。它能解决问题吗?
如果您使用以下方法,它将解决问题:
while (hasNextBatch()) {
saveBatch();
entityManager.flush();
entityManager.clear();
}
在I.save((之后实体会发生什么?JPA是否仍然保留对所有保存的实体的引用?
是(除非执行上述操作(。
在哪里可以阅读有关此主题的更多信息?
例如,在这里。