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/