在hibernate中保存大量记录的最佳方法

时间:2013-04-09 04:11:18

标签: hibernate save

我有5000条记录要保存。在数据库的角度来看,最好的方法是什么,在hibernate中保存单个记录(保存(记录)5000次)还是saveAll(5000条记录列表)?由于这种情况经常会让我觉得最好......

2 个答案:

答案 0 :(得分:2)

在休眠中使用功能批量插入。

  

批量插入是hibernate的一个强大功能,在批量导入其他系统的数据时尤其有用。如果不使用hibernate的批处理功能,那么在插入许多记录时,应用程序的性能可能会急剧下降。

这是一个简单的comparison on normal save and Batch insert.

还有official docs.

答案 1 :(得分:1)

一次保存5000条记录可能会耗尽内存并获得OutOfMemoryException,因为5000个实例可能会占用相当大的内存。

一次保存一条记录意味着您不使用JDBC的批处理功能,可以更有效地插入记录。

因此,为了获得最佳性能,您应该通过将hibernate.jdbc.batch_size设置为某个非零值来告诉hibernate使用JDBC的批处理功能。一次保存的记录数应等于hibernate.jdbc.batch_size的值。

此外,您应该清除会话以释放内存,以防止在每个批处理结束时内存耗尽。您还可以禁用二级缓存以减少不必要的开销。

参考: Hibernate batch size confusion