按需记录数据库CUD操作和回滚语句
Log database CUD operations and rollback statements on demand
我的应用程序使用 Hibernate
/Spring
/Struts
/MySql
.
要求是:
- 记录 HQL 查询 w.r.t 用户 SessionId。
- 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.
还原操作的最简单方法是提交补偿事件。
我的应用程序使用 Hibernate
/Spring
/Struts
/MySql
.
要求是:
- 记录 HQL 查询 w.r.t 用户 SessionId。
- 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.
还原操作的最简单方法是提交补偿事件。