监视Java Hibernate数据检索



假设我有一个类似

的JPA
SELECT x FROM Person

现在,我想在Hibernate从数据库加载数据时监视它的进度,这样我就可以向用户显示进度条。这种事可能吗?我知道我可以显示indeterminate进度条,但是如何显示determinate进度条呢?

谢谢。

我想这是不可能的,因为你不能得到数据库查询的状态(已经加载了多少行等),因此你必须等待它完成。

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

所以你可能能告诉你的可能是Hibernate什么时候完成了从数据库加载结果,什么时候创建/更新了所有必要的实体。

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

最新更新