监控Java Hibernate数据检索

时间:2011-12-14 15:40:51

标签: java hibernate jpa

说我有像

这样的JPA
SELECT x FROM Person

现在,我希望在从数据库加载数据时监视Hibernate的进度,以便我可以向用户显示进度条。这样的事可能吗?我知道我可以显示不确定进度条,但是如何显示确定进度条呢?

感谢。

1 个答案:

答案 0 :(得分:0)

AFAIK实际上并不可能,因为你无法获得数据库查询的状态(已经加载了多少行等),因此你必须等待它完成。

然后,Hibernate会从结果中创建实体,尽管你可能会在这里拦截,但我怀疑Hibernate提供了一些有用的钩子。

所以可能能够告诉Hibernate何时完成从数据库加载结果以及何时创建/更新所有必需实体。

或者,您可以尝试批量加载实体,即首先获取结果数,然后加载单个块(例如0-99,100-199,......)。由于您知道结果的数量,因此您可以计算块的数量,并且可以在块之间更新进度条。但请注意,这会降低性能,尤其是在查询非常复杂的情况下。