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

时间:2014-05-23 17:38:34

标签: hibernate hibernate-envers

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

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

1-这是性能问题吗?

2-是否存在一些无法涵盖的场景,只有一个表用于所有审计信息?

3-这是实施它的最简单方法吗?

4-其他?

1 个答案:

答案 0 :(得分:2)

我认为有两个主要原因:

  • 我希望审计表具有明确的,可人类浏览的表示。虽然可以理解和查询Envers直接从SQL生成的审计表,但是人类更难理解包含来自所有其他表的数据的单个表。

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

除此之外,我认为两种解决方案都可能是好的,但最终你必须解决这个问题。

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