Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在hibernate中保存大量记录的最佳方法_Hibernate_Save - Fatal编程技术网

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

在hibernate中保存大量记录的最佳方法,hibernate,save,Hibernate,Save,我有5000条记录要保存。从数据库的角度来看,在hibernate中保存单个记录(保存(记录)5000次)还是保存全部记录(记录列表5000条)的最佳方式是什么。。。?由于这种情况经常出现,建议我使用最佳方案。在Hibernate中使用批插入功能 批插入是hibernate的一个强大功能,在批量导入其他系统的数据时特别有用。如果不使用hibernate的批处理功能,则在插入许多记录时,应用程序的性能可能会显著降低 这里有一个简单的例子 而且一次保存5000条记录可能会耗尽内存,并获得OutOfM

我有5000条记录要保存。从数据库的角度来看,在hibernate中保存单个记录(保存(记录)5000次)还是保存全部记录(记录列表5000条)的最佳方式是什么。。。?由于这种情况经常出现,建议我使用最佳方案。

在Hibernate中使用批插入功能

批插入是hibernate的一个强大功能,在批量导入其他系统的数据时特别有用。如果不使用hibernate的批处理功能,则在插入许多记录时,应用程序的性能可能会显著降低

这里有一个简单的例子


而且

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

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

因此,为了获得最佳性能,您应该告诉hibernate使用JDBC的批处理功能,方法是将
hibernate.JDBC.batch\u size
设置为非零值。一次保存的记录数应等于
hibernate.jdbc.batch\u size
的值

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

参考: