我应该如何可视化Envers收集的数据?
问题描述:
我是Hibernate(4.2)+ Spring组合的真正初学者,负责处理子应用程序,它使用这些子程序在管理员门户中实现一些CRUD管理,因此我可能在非常基本的步骤中迷路了。我应该如何可视化Envers收集的数据?
我已经将Hibernate-Envers加载到项目中,对特定的@Entity字段进行审计日志记录。在为其添加@Audited之后,Envers按预期工作,将数据添加到_aud表中。
我的目标是向管理员显示此实体的所有修订列表。我不知道我应该怎么做。
什么我试过到目前为止..
- 创建我想象中会使用 AuditReader通过一些新的 服务提供的所有修订的列表中的新库类。但是,如果不为历史记录对象本身添加新的实体,我就无法完成这项工作 - 而且我觉得这可能不是要走的路。
- 尝试在实体的现有控制器中使用AuditReader。对于AuditReader的创建,我需要一个sessionFactory,我试图自动装入控制器,但事实证明这不是正确的,因为自动装配失败了。
什么是从envers收集数据* _aud表向他们展示在网页上最终用户的首选结构?
答
创建一个新的Repository类,我想使用AuditReader通过一些新的Service来提供所有修订的列表。但是,如果没有为History对象本身添加新的实体,我无法完成这项工作 - 而且我觉得这可能不是一条路。
让我们假设我们有这样一些非常愚蠢的基本实体:
@Entity
@Audited
public class BasicEntity {
@Id
@GeneratedValue
private Integer id;
private String name;
...
}
您应该能够构建都使用BasicEntity
为实体型这里有两个存储库/ DAO组件,但两者内部在这些情况下运作非常不同。
您的企业资源库组件将有Session
或EntityManager
注射,你用它来操纵这些实例调用#persist
,#merge
等
你的审计资源库组件也将有Session
或EntityManager
注射,但会使用构建一个AuditReader
并查询审计表。
@Component
public interface BasicEntityAuditRepository implements AuditRepository<BasicEntity> {
@PersistenceContext
private EntityManager entityManager;
@Override
public List<BasicEntity> findByRevision(Long id, Number revision) {
final AuditReader auditReader = AuditReaderFactory.get(entityManager);
// build whatever query and return the results.
}
}
public interface AuditRepository<T> {
List<T> findByRevision(Long id, Number revision);
}