我应该如何可视化 Envers 收集的数据?
How should I visualize the data collected by Envers?
我是 Hibernate (4.2) + Spring 组合的真正初学者,负责开发一个子应用程序,该应用程序使用这些来促进管理员门户中的一些 CRUD 管理,所以我可能是在非常基本的步骤中迷路。
我已将 Hibernate-Envers 加载到项目中以对特定的@Entity 字段进行审计日志记录。添加 @Audited 后,Envers 按预期工作,将数据添加到 _aud table.
我的目标是向管理员显示对该实体的所有修订的列表。我不确定我应该怎么做。
到目前为止我尝试过的是..
- 创建一个新的存储库 class 我想象中会使用
AuditReader 通过一些新的方式提供所有修订的列表
服务。但是,如果不添加新的,我就无法完成这项工作
历史对象本身的实体——我觉得这可能是
不是要走的路。
- 尝试在实体的现有控制器中使用 AuditReader。为了创建 AuditReader,我需要一个 sessionFactory,我试图将其自动装配到控制器中,但事实证明这不是正确的做法,因为自动装配失败了。
从 envers *_aud tables 收集数据以在网页上向最终用户显示它们的首选结构是什么?
Create a new Repository class that I imagined would use the AuditReader to supply a list of all revisions through some new Service. However, I couldn't make this work without adding a new Entity for the History object itself - and I felt this was probably not the way to go.
让我们假设我们有一些非常愚蠢的基本实体,如下所示:
@Entity
@Audited
public class BasicEntity {
@Id
@GeneratedValue
private Integer id;
private String name;
...
}
您应该能够构建两个 repository/dao 组件,它们都使用 BasicEntity
作为此处的实体类型,但两者在内部操作上与这些实例有很大不同。
您的业务存储库组件将注入 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);
}
我是 Hibernate (4.2) + Spring 组合的真正初学者,负责开发一个子应用程序,该应用程序使用这些来促进管理员门户中的一些 CRUD 管理,所以我可能是在非常基本的步骤中迷路。
我已将 Hibernate-Envers 加载到项目中以对特定的@Entity 字段进行审计日志记录。添加 @Audited 后,Envers 按预期工作,将数据添加到 _aud table.
我的目标是向管理员显示对该实体的所有修订的列表。我不确定我应该怎么做。
到目前为止我尝试过的是..
- 创建一个新的存储库 class 我想象中会使用 AuditReader 通过一些新的方式提供所有修订的列表 服务。但是,如果不添加新的,我就无法完成这项工作 历史对象本身的实体——我觉得这可能是 不是要走的路。
- 尝试在实体的现有控制器中使用 AuditReader。为了创建 AuditReader,我需要一个 sessionFactory,我试图将其自动装配到控制器中,但事实证明这不是正确的做法,因为自动装配失败了。
从 envers *_aud tables 收集数据以在网页上向最终用户显示它们的首选结构是什么?
Create a new Repository class that I imagined would use the AuditReader to supply a list of all revisions through some new Service. However, I couldn't make this work without adding a new Entity for the History object itself - and I felt this was probably not the way to go.
让我们假设我们有一些非常愚蠢的基本实体,如下所示:
@Entity
@Audited
public class BasicEntity {
@Id
@GeneratedValue
private Integer id;
private String name;
...
}
您应该能够构建两个 repository/dao 组件,它们都使用 BasicEntity
作为此处的实体类型,但两者在内部操作上与这些实例有很大不同。
您的业务存储库组件将注入 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);
}