我有5000条记录要保存。在数据库的角度来看,最好的方法是什么,在hibernate中保存单个记录(保存(记录)5000次)还是saveAll(5000条记录列表)?由于这种情况经常会让我觉得最好......
答案 0 :(得分:2)
在休眠中使用功能批量插入。
批量插入是hibernate的一个强大功能,在批量导入其他系统的数据时尤其有用。如果不使用hibernate的批处理功能,那么在插入许多记录时,应用程序的性能可能会急剧下降。
答案 1 :(得分:1)
一次保存5000条记录可能会耗尽内存并获得OutOfMemoryException
,因为5000个实例可能会占用相当大的内存。
一次保存一条记录意味着您不使用JDBC的批处理功能,可以更有效地插入记录。
因此,为了获得最佳性能,您应该通过将hibernate.jdbc.batch_size
设置为某个非零值来告诉hibernate使用JDBC的批处理功能。一次保存的记录数应等于hibernate.jdbc.batch_size
的值。
此外,您应该清除会话以释放内存,以防止在每个批处理结束时内存耗尽。您还可以禁用二级缓存以减少不必要的开销。