【问题标题】:Loading million rows in hibernate在休眠中加载百万行
【发布时间】:2011-04-19 03:08:41
【问题描述】:

如果我想在 hibernate 中获取数百万行,它将如何工作? hibernate会崩溃吗?我该如何优化它。

【问题讨论】:

  • 你到底想通过获取行来完成什么?把它们搬到别的地方?搜索他们?举报他们?细节会有所帮助。
  • JPA/hibernate big collections的可能重复项有很多相同主题的问题,请。
  • 1 行一百万次? 1m 1 次?

标签: java sql database hibernate optimization


【解决方案1】:

通常你不会为此使用休眠。如果您需要执行批处理操作,请使用 sql 或 hibernate 包装器进行批处理操作。加载数百万条记录不会对您的应用程序有好处。您的应用程序在 gc 运行时出现抖动,或者可能崩溃。必须有另一种选择。

【讨论】:

    【解决方案2】:

    如果你读一个/写一个,它可能会正常工作。您确定要以这种方式读取 1,000,000 行吗?可能需要一段时间。

    如果您希望所有对象同时在内存中,您可能会遇到挑战。

    您可以通过寻找不同的方式来优化它。例如,您可以使用数据库工具从数据库中转储,这比使用 hibernate 读取要快得多。

    您可以在数据库中选择总和、最大值和计数,而无需通过网络返回一百万行。

    你到底想完成什么?

    【讨论】:

      【解决方案3】:

      为此,您最好使用带有行处理程序的 spring 的 jdbc 工具。它将运行查询,然后一次对一行执行一些操作。

      【讨论】:

        【解决方案4】:

        只带上您需要的列。在测试环境中尝试一下。

        【讨论】:

          【解决方案5】:

          您应该尝试查看 StatelessSession 接口,可以在此处找到示例:

          http://mrmcgeek.blogspot.com/2010/09/bulk-data-loading-with-hibernate.html

          【讨论】:

            猜你喜欢
            • 2016-01-27
            • 2011-06-15
            • 1970-01-01
            • 2018-02-06
            • 2017-05-26
            • 1970-01-01
            • 2018-07-24
            • 2011-12-14
            相关资源
            最近更新 更多