【问题标题】:Best way to save the large number of records in hibernate在休眠中保存大量记录的最佳方法
【发布时间】:2013-03-31 08:45:03
【问题描述】:

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

【问题讨论】:

    标签: hibernate save


    【解决方案1】:

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

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

    这是一个简单的comparison on normal save and Batch insert.

    还有official docs.

    【讨论】:

      【解决方案2】:

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

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

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

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

      参考: Hibernate batch size confusion

      【讨论】:

        猜你喜欢
        • 2011-06-03
        • 2014-10-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-12-30
        • 1970-01-01
        相关资源
        最近更新 更多