【发布时间】:2018-08-18 06:53:58
【问题描述】:
我们正在设计具有两个特定要求的实体审计库:每个实体一个表和增量日志(JSON 差异)而不是(完整快照)。
我只知道用于实体审计的 Hibernate EnVers 和 JaVers。 (如果还有其他问题,请告诉我。)它们都不符合我们的要求。
我们已经知道审计记录是什么样的,并且我们希望在实施该库时尽可能多地重复使用。我正在考虑将 Hibernate EnVers 添加为依赖项并对其进行自定义/扩展以支持我们的需求。
第一个问题是,考虑到我们的需求和我们的平台(我们使用 Spring+JPA+Hibernate),是否有任何更强有力的论据支持 JaVers 而不是 Hibernate EnVers?
假设第一个问题的答案是否定的,并且我们将使用 Hibernate EnVers,那么 Hibernate EnVers 的可扩展性如何?而且,除了一些超级简单的例子之外,我找不到任何关于如何准确地做到这一点的资源。有没有?我可以从哪里开始?
我们的设计或多或少如下:
Entity Table
Employees (EmployeeId, FirstName, LastName, DepartmentId, ...)
Audit Table
Employees_AUD (EmployeeId, Diff, REV, REVTYPE)
-- EmployeeId: employee ID
-- Diff: diff of the two states of entity
-- REV: revision id (Hinbernate EnVers)
-- REVTYPE: revision type (Hinbernate EnVers)
REVINFO Table:
-- Original table created by Hibernate EnVers
谢谢。
【问题讨论】:
-
您的解决方案是否暗示您需要读取给定
Employee的所有审核行,ID 不超过特定修订号,以便合并差异以了解所有审核说明那个员工?这似乎比像 Envers 那样简单地存储快照的开销要大得多,从而使查询端变得直接、高效和简单。 -
如果你考虑 Javers 或 Envers,这篇文章可以帮助你javers.org/blog/2017/12/javers-vs-envers-comparision.html
-
@Naros 你是对的,但我们只对差异感兴趣。
-
@BartekWalacik 感谢您的链接(我已经阅读了它),并为出色的工作做得很好:)
标签: java hibernate hibernate-envers javers