【发布时间】:2013-03-31 08:45:03
【问题描述】:
我有 5000 条记录要保存。从数据库的角度来看,最好的方法是什么,是否在休眠中保存单个记录(保存(记录)5000次)或保存所有(5000条记录的列表)......?因为这种情况经常出现,所以建议我最好的一个..
【问题讨论】:
我有 5000 条记录要保存。从数据库的角度来看,最好的方法是什么,是否在休眠中保存单个记录(保存(记录)5000次)或保存所有(5000条记录的列表)......?因为这种情况经常出现,所以建议我最好的一个..
【问题讨论】:
在 Hibernate 中使用功能批量插入。
批量插入是 hibernate 的一项强大功能,当您从其他系统批量导入数据时特别有用。如果不使用休眠的批处理功能,在插入很多记录时,应用程序的性能可能会急剧下降。
【讨论】:
一次保存 5000 条记录可能会耗尽内存并获得 OutOfMemoryException,因为 5000 个实例可能会占用相当大的内存。
一次保存一条记录意味着您没有使用 JDBC 的批处理功能,该功能可以更有效地插入记录。
因此,为了获得最佳性能,您应该通过将hibernate.jdbc.batch_size 设置为某个非零值来告诉hibernate 使用JDBC 的批处理功能。一次保存的记录数应等于hibernate.jdbc.batch_size 的值。
此外,您应该清除会话以释放内存,以防止在每批结束时内存耗尽。您还可以禁用二级缓存以减少不必要的开销。
【讨论】: