我需要帮助才能找到一种聪明的方法来跟踪Web应用程序中的用户更改。
让我们说这个场景:
接下来的问题是,跟踪这些变化的最佳方法是什么?管理员可能无法检查用户数天甚至数周。我真的不需要保留原始值(至少在这一点上),我只想确定哪些字段已被更改。在数据库中跟踪这个的最佳方法是什么?
该应用程序使用Hibernate和MySQL以Java / JSF编写,用于数据访问和存储。
谢谢!
答案 0 :(得分:1)
看看Hibernate Envers。 - 它提供了审核和版本控制,但我的这个对你的用例来说太胖了。
答案 1 :(得分:1)
您可以在数据库中创建一个表来进行更改......
如果您不需要保留旧值,则只需省略更改表中的old_value列。
答案 2 :(得分:1)
根据您的使用案例,我会选择以下内容:
使用以下结构创建“日志”表:
Username|Fieldname |Processed
Pamar |Profile.Email |No
Pamar |Homepage.Blurb |No
在要跟踪的字段上设置触发器。每当修改“已记录”字段时,触发器将创建一个指向用户和字段名称的记录。
应用程序的标记部分将允许管理员查询日志记录表(仅选择“未处理的”记录)并一次处理一个或多个字段。 您没有提供有关标记/索引过程的许多详细信息,但此表应足以正确识别已更改的字段(您可以直接查询这些字段以访问当前值,这就是您所需要的)。处理(索引)给定更新后,您可以将其“已处理”标志设置为“是”(或删除它,您的选择)。
您可以选择使用时间戳字段,以便例如按照用户完成的顺序处理更新。
如果您甚至需要保留“以前的版本”,只需在当前结构中添加一个文本字段并更新触发器,以便将旧值保存在其中。