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