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

时间:2015-03-23 04:12:29

标签: java mysql spring hibernate logging

我的应用使用Hibernate / Spring / Struts / MySql

要求是:

  1. 记录用户SessionId的HQL查询w.r.t。
  2. 按需还原/回滚语句。
  3. 意图是将用户所做的更改快速记录到数据中,并在需要时立即还原。我不确定这种可行性。

2 个答案:

答案 0 :(得分:0)

是的,你可以。第一步,看看hibernate-envers项目。该项目可帮助您进行更改审核。它为每个实体表创建审计表,并在实体更改后自动填充。但是我想,第二部分任务,你只能手动完成:在审计表中将存储所有实体的变化。然后,您只需将实体中的数据还原到上一个版本即可。

答案 1 :(得分:0)

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

您可能需要一个CQRS架构,其中事件存储在数据库中(也解决了审计日志记录要求),并且更改由batch processor重播。

恢复行动的最简单方法是提交补偿事件。