我正在使用Spring Data REST开发RESTful API。现在进行审核,Spring可以选择审核created_date
和modified_date
等元数据,但它们不提供实体版本控制。
目前实体版有两个流行的库,分别是Envers和Javers。我已经查看了两者的比较,但没有关于这个问题的任何文章。
那么使用Javers而不是Envers有什么好处和缺点?
答案 0 :(得分:4)
Envers是Hibernate插件。 它与Hibernate有很好的集成,但你只能在传统的SQL数据库中使用它。 如果您选择NoSQL数据库或SQL,但使用其他持久性框架 JOOQ - Envers不是一种选择。
相反,JaVers可以与任何类型的数据库一起使用 持久性框架。目前,JaVers带有MongoDB和。的存储库实现 流行的SQL数据库。其他数据库(如Cassandra,Elastic)可能会在未来添加。
Envers的审计数据模型是应用程序数据模型的副本。正如文件所说:
对于每个经审计的实体,都会创建一个审计表。
默认情况下,通过在原始名称中添加_AUD
后缀来创建审计表名称。
有利的是,您的审计数据接近您的实时数据。 Envers的桌子看起来很熟悉。
使用SQL查询它们很容易。
JaVers将自己的快照模型用于审计数据。
快照与实时数据分离,
JaVers将它们作为具有统一结构的JSON文档保存到单个表(jv_snapshots
)中。
好处?您可以选择存储审计数据的位置。
默认情况下,JaVers使用与应用程序相同的数据库,
但你可以指向另一个数据库。例如,SQL for application和MongoDB for JaVers
或集中的JaVers数据库共享给贵公司的所有应用程序。)
阅读此博客文章,其中包含完整的JaVers vs Envers比较: https://javers.org/blog/2017/12/javers-vs-envers-comparision.html
答案 1 :(得分:-1)
我不知道Javers,但完整的Envers数据绑定具有以下优势:
这使得Enver可以记录过去在此影子副本中所做的更改。您可以将影子表移动到其他数据库中。