我的应用使用Hibernate
/ Spring
/ Struts
/ MySql
。
要求是:
意图是将用户所做的更改快速记录到数据中,并在需要时立即还原。我不确定这种可行性。
答案 0 :(得分:0)
是的,你可以。第一步,看看hibernate-envers项目。该项目可帮助您进行更改审核。它为每个实体表创建审计表,并在实体更改后自动填充。但是我想,第二部分任务,你只能手动完成:在审计表中将存储所有实体的变化。然后,您只需将实体中的数据还原到上一个版本即可。
答案 1 :(得分:0)
交易是ACID,它们是持久的。无法回滚已提交的事务,因为可能还有其他事务已使用您更改的状态。
您可能需要一个CQRS架构,其中事件存储在数据库中(也解决了审计日志记录要求),并且更改由batch processor重播。
恢复行动的最简单方法是提交补偿事件。