Java Envers Hibernate创建/更改表的日志
1) 当有一个新实体或列被@Audited注释时,Hibernate Envers何时在模式中创建或更改审核表 2) 有没有办法记录添加新审计表或列时调用的mysql命令Java Envers Hibernate创建/更改表的日志,java,mysql,spring,hibernate,hibernate-envers,Java,Mysql,Spring,Hibernate,Hibernate Envers,1) 当有一个新实体或列被@Audited注释时,Hibernate Envers何时在模式中创建或更改审核表 2) 有没有办法记录添加新审计表或列时调用的mysql命令 HibernateEnvers正在使用拦截器将更改插入试听表。在事务提交到数据库之前调用它们 问题有点不清楚,如果你说mysql命令,我想你是指更新查询,比如createtable和createcolumn。默认情况下,enver报告违反模式的行为。我可以想象,如果您将试听表也公开为hibernate实体,hbm2ddl可能会
createtable
和createcolumn
。默认情况下,enver报告违反模式的行为。我可以想象,如果您将试听表也公开为hibernate实体,hbm2ddl可能会创建这些创建表和创建列更新查询@version
的版本属性。正确的名称是audition,因为您在历史上记录了对数据库中表的所有更改
如果“更改实体表”已经有行。
首先要说的是,实体表中的每个有效负载列都是可以为null的,您必须在audition表中添加一列,默认情况下该列具有null值。但是如果真正的表不允许列中有空值,那么试听就被破坏了!这将导致意想不到的问题。这意味着将正版列自动复制到已审核列必须是一个重建架构和数据的过程
当有一个新实体或列被@Audited注释时,Hibernate Envers何时在模式中创建或更改审核表
从技术上讲,HibernateEnvers根本不这样做,整个步骤都由HibernateORM来处理。
在Hibernate ORM的引导过程中,会发生以下步骤:
您还可以考虑使用更独立的工具,例如Debe,它能够监视事务/存档/ OPLOG/BILLO级别的数据库更改,并且某些连接器公开了专门存储DDL更改的卡夫卡主题。这个答案无所不包。非常感谢。除了Naros所说的之外,我们最近还做了大量的关于使用Debezium/CDC构建审计日志的研究。欢迎反馈!