1

我有 5000 条记录要保存。从数据库的角度来看,最好的方法是什么,是否在休眠中保存单个记录(保存(记录)5000次)或保存所有(5000条记录的列表)......?由于这种情况经常出现,因此建议我最好的一个..

4

2 回答 2

2

在 Hibernate 中使用功能批量插入。

Batch Insertion 是 hibernate 的一项强大功能,当您从其他系统批量导入数据时特别有用。如果不使用休眠的批处理功能,在插入许多记录时,应用程序的性能可能会急剧下降。

这是普通保存和批量插入的简单比较。

还有官方文档。

于 2013-04-09T05:01:43.900 回答
1

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

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

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

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

参考: Hibernate 批量大小混淆

于 2013-04-09T06:35:24.287 回答