【发布时间】:2012-11-07 14:27:17
【问题描述】:
我们目前在一个项目中使用 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有没有办法优化查询,例如一次获取多种实体?
【问题讨论】:
标签: java hibernate hibernate-envers