我正在使用Spring Data REST开发RESTful API。现在进行审计了,Spring确实可以选择审计诸如created_datemodified_date之类的元数据,但是它们不提供实体版本控制。

当前,实体版本有两个流行的库,分别是Envers和Javers。我已经寻找了两者的比较,但是没有关于此事的任何文章。

那么,使用Javers over Envers有什么优点和缺点?

最佳答案

JaVers和Envers之间有两个大区别:

  • 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和用于JaVers的MongoDB
    或为公司中所有应用程序共享的集中式JaVers数据库)。

  • 阅读此博客文章,并进行JaVers与Envers的完整比较:
    https://javers.org/blog/2017/12/javers-vs-envers-comparision.html

    关于spring - Javers-使用Javers而不是Envers有什么优势?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46077069/

    10-09 12:40