gpt4 book ai didi

java - Hibernate Envers 中的查询性能

转载 作者:行者123 更新时间:2023-11-29 05:52:50 29 4
gpt4 key购买 nike

我们目前在一个项目中使用 Envers,当我们查询一些分布在多个表中的审计数据时,性能下降了很多。

基本上我们创建了一个审计数据流,如下所示:

List<Object[]> auditStream = new LinkedList<Object[]>();
for (Class<?> entityClass : desiredEntityClasses) {
auditStream.addAll(
auditReader.createQuery()
.forRevisionsOfEntity(entityClass, false, true)
.add(AuditEntity
.revisionProperty("timestamp")
.ge(startTimestamp))
.getResultList());
}

除此之外,某些类型的实体(如嵌套实体)需要一些额外的审计信息。

对于少量数据(通过减少时间戳),响应时间是合理的,但是 auditStream 中有 500 个条目,大约需要 3 秒才能全部获取,这太长了。

Q1 我想知道是否可以对这类查询启用批量获取以及如何启用?

Q2 是否有一些方法可以优化查询,例如一次获取不止一种实体?

最佳答案

一个试听是多个表中更改的集合!

如果您使用由 REVID 引用的修订表 (REVINFO),将检查所有其他表是否匹配此 REVID 的更改。

Q1:不是所有依赖表的变化都依赖于你的Entity-Audition,Batch-Fetch不能在这里工作。

Q2:您最好直接通过 HQL 或纯 SQL 获取更改。

关于java - Hibernate Envers 中的查询性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13271732/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com