按需记录数据库CUD操作和回滚语句

Log database CUD operations and rollback statements on demand

我的应用程序使用 Hibernate/Spring/Struts/MySql.

要求是:

  1. 记录 HQL 查询 w.r.t 用户 SessionId。
  2. Revert/rollback 按需陈述。

目的是快速记录用户对数据所做的更改,并在需要时立即恢复。我不确定这样的可行性。

是的,你可以。拳头,看hibernate-envers项目。该项目可帮助您进行更改审核。它为每个实体 table 创建审计 table 并在实体更改时自动填充它。但是任务的第二部分,我想,你只能手动完成:在 audit tables 中将存储所有实体更改。然后你可以简单地将实体中的数据恢复到最后一个版本。

交易 ACID 并且它们是持久的。无法回滚已提交的事务,因为可能有其他事务已经在使用您更改的状态。

你可能想要 CQRS architecture, where events are stored in the data base (solving the audit logging requirement too) and the changes are replayed by a batch processor.

还原操作的最简单方法是提交补偿事件。