0

我目前正在用 envers 审核我的数据库,它做得很好。我已经解析了各种实体并在 UI 中显示结果,效果也很好。

我现在遇到了性能问题。我正在查询一个实体以获取记录,这个查询大约需要 5 秒!执行 SQL 似乎有许多简单的 SQL。查询似乎拉回了很多!

最好用一个例子来解释

我正在查询的实体是House

Room这与(是奇怪的例子;)一对一

我的House有一个字段,其中引用了Room. 房间不知道数据库级别的房屋,但在休眠时确实有一个 mappedBy 字段。

现在 Room 还具有其他参数,例如家具列表、窗户和门。

当我查询 house 并调用House.getRoom().getId()它时,envers 似乎也在查询 Room 内的所有参数。它将拉回所有家具信息、所有窗户信息等。我要审核的是房间,所以我只会比较房间中的简单参数,比如 wallColor 等,它们是基本的字符串或整数。

我的休眠配置根据参数进行了快速且延迟的获取,但看起来 Envers 正在拉取所有内容。

有趣的是,我发现如果关系颠倒了(房间实体有 House id),那么当我调用 room.getHouse().getId() 时,它不会提取所有内容。

这是休眠的怪癖还是我如何使用它?

我怎样才能让 envers 只阅读 Room 中的内容,然后如果我调用 getFurnitureList() 将尝试懒惰地加载而不是快速加载?

提前致谢

编辑 我一直在看预测,想知道我是否可以使用它来从这个对象返回特定的变量。有谁知道这是否可以解决我的问题?我仍在调查他们,但任何建议将不胜感激

谢谢

4

0 回答 0