【发布时间】:2009-10-22 19:23:15
【问题描述】:
我有一个选择查询,它需要 10 分钟才能完成,因为它运行了 10M 条记录。当我通过 TOAD 或使用正常 JDBC 连接的程序运行时,我会返回结果,但是在运行使用 Hibernate 作为 ORM 的作业时不会返回任何结果。它只是挂断了……即使在 45 分钟后?请帮忙
【问题讨论】:
-
您是否真的希望我们基于此给您答复?
标签: oracle hibernate jdbc time
我有一个选择查询,它需要 10 分钟才能完成,因为它运行了 10M 条记录。当我通过 TOAD 或使用正常 JDBC 连接的程序运行时,我会返回结果,但是在运行使用 Hibernate 作为 ORM 的作业时不会返回任何结果。它只是挂断了……即使在 45 分钟后?请帮忙
【问题讨论】:
标签: oracle hibernate jdbc time
您是说您尝试使用像 hibernate 这样的 ORM 检索 10M 条记录吗? 如果是这种情况,你有一个大问题,你需要重新设计你的应用程序,因为这不起作用,关于它为什么挂起,好吧,我敢打赌是因为它内存不足。
【讨论】:
您是否为 Hibernate 启用了 SQL 输出?您需要set hibernate.show_sql to true 才能执行此操作。
完成后,将生成的 SQL 与您通过 TOAD 运行的 SQL 进行比较。它们完全相同是否相同?
我要在这里冒险猜测一下,说它们不是,因为一旦生成 SQL,Hibernate 就不会做任何花哨的事情 - 连接是从池中获取的;准备好的语句被创建并执行 - 所以它应该与 JDBC 没有什么不同。
因此,最有可能的问题是如何优化您的 HQL。如果您需要任何帮助,您必须发布有问题的 HQL 以及适当的映射/表模式。对查询运行解释也会有所帮助。
【讨论】: