2011-12-14 28 views
1

说我有一个JPA像监控Java的Hibernate的数据retreival

SELECT x FROM Person 

现在,我想监视Hibernate的进步,同时从数据库加载数据,这样我可以显示进度条到用户。这样的事情可能吗?我知道我可以显示不确定进度条,但如何显示确定进度条?

谢谢。

回答

0

AFAIK由于您无法了解数据库查询的状态(已加载多少行等),因此您不得不等待这些完成。 Hibernate会从结果中创建实体,虽然你可能在这里拦截,但我怀疑Hibernate提供了一些有用的钩子。

因此,所有你可能能够告诉可能是何时Hibernate已经完成从数据库中加载结果,以及它何时创建/更新所有必要的实体。

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