hibernate - 为什么 Envers 为每个表创建一个审计表

标签 hibernate hibernate-envers

Envers 期望系统中的每个可审计表都有一个审计表。所以如果我想审计30个表,我必须有30个审计表。来自 Can i use only one table for all hibernate envers auditing?从文档来看,这似乎是唯一可用的选项。

我想知道为什么做出这一决定,而不是只使用一个包含元数据的表来存储整个审计信息,或者为什么不提供此选项:

1- 这是性能问题吗?

2-是否存在某些场景无法仅用一张表来涵盖所有审核信息?

3- 这只是最简单的实现方法?

4-其他?

最佳答案

我认为有两个主要原因:

  • 我希望审计表具有清晰、易于浏览的表示形式。虽然可以理解和查询 Envers 直接从 SQL 生成的审计表,但对于人类来说,理解包含所有其他表中的数据的单个表会困难得多。

  • 单个表可能会很快变得非常大,从而使管理单个实体的审计变得更加困难。对于独立的实体,情况很清楚

除此之外,我认为这两种解决方案都可能不错,但最终您必须选择其中一个。

使用单个表(不同的审计策略)来实现 Envers 的功能是可能的,但还没有人这样做。

关于hibernate - 为什么 Envers 为每个表创建一个审计表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23835352/

相关文章:

java - 为什么使用 Maven 和 Hibernate 设置一个简单的项目会失败?

java - 为什么 Spring Bean Self Invocation 在这里为 Transaction 工作

java - 如何防止删除或更新其他子项,同时仅更新父项 @OneToMany 关系中的少数项

java - Spring Boot + Hibernate 恩弗斯。创建名称为 'entityManagerFactory' 的 bean 时出错

java - 使用 Hibernate envers 查找最近删除的实体

java - Hibernate Validator(如何只接受4个字母和10个数字)

Java - sql查询的正则表达式

java - "Error creating bean with name ' scopedTarget.get '"接收 RabbitMQ 消息时

java - HibernateTemplate 可以与 Envers 一起使用吗?如果是这样,怎么办?