我需要帮助想出一种巧妙的方法来跟踪 Web 应用程序中的用户更改。
假设我们有这样的场景:
- 用户 X 登录并更新其个人资料中的一些字段,例如电子邮件地址。
- 这会导致用户被标记为已更新,并且应由管理员进行检查
- 在管理 UI 中,我们要突出显示已修改的字段
问题就变成了,跟踪这些变化的最佳方法是什么?管理员可能几天甚至几周都不会检查用户。我真的不需要保留原始值(至少在这一点上),我只是希望能够确定哪些字段已更改。在数据库中跟踪这一点的最佳方法是什么?
该应用程序是用 Java/JSF 编写的,并使用 Hibernate 和 MySQL 进行数据访问和存储。
谢谢!
最佳答案
根据您的用例,我会选择这样的东西:
创建一个具有以下结构的“日志”表:
Username|Fieldname |Processed
Pamar |Profile.Email |No
Pamar |Homepage.Blurb |No
在您想要跟踪的字段上设置触发器。每当修改“记录”字段时,触发器都会创建一条指向用户和字段名称的记录。
应用程序的标记部分将允许管理员查询日志表(仅选择“未处理”记录)并一次处理一个或多个字段。 您没有提供有关标记/索引过程的许多详细信息,但该表应该足以正确识别更改的字段(并且您可以直接查询这些字段以访问当前值,这就是您所需要的)。处理(索引)给定更新后,您可以将其“已处理”标志设置为"is"(或删除它,您可以选择)。
您可以选择使用时间戳字段,以便您可以按照用户完成更新的顺序处理更新。
如果您甚至需要保留“以前的版本”,您只需向当前结构添加一个文本字段并更新触发器,以便它们在其中保存旧值。
关于java - 如何跟踪用户对 Web 应用程序中对象的更改?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5562442/