如何在Java中记录对存储对象/记录的更改

如何在Java中记录对存储对象/记录的更改,java,pojo,Java,Pojo,在对操作问题进行故障排除时,我发现有时在没有更多细节的情况下很难诊断问题。例如,我从时间戳中看到,商户记录在某一特定日期发生了更改,因此前一天的交易处理受到了质疑。记录更改的内容有助于快速排除可能性 有没有自动进行这种比较的实用程序?我希望它能够执行以下操作: String logDelta=SomeLibrary.describeChanges(bean1, bean2); "lastName{'Onassis','Kennedy Onassis'}, favoriteNumber{16,5

在对操作问题进行故障排除时,我发现有时在没有更多细节的情况下很难诊断问题。例如,我从时间戳中看到,商户记录在某一特定日期发生了更改,因此前一天的交易处理受到了质疑。记录更改的内容有助于快速排除可能性

有没有自动进行这种比较的实用程序?我希望它能够执行以下操作:

String logDelta=SomeLibrary.describeChanges(bean1, bean2);
"lastName{'Onassis','Kennedy Onassis'}, favoriteNumber{16,50}"
我希望能有一艘这样的班轮:

String logDelta=SomeLibrary.describeChanges(bean1, bean2);
"lastName{'Onassis','Kennedy Onassis'}, favoriteNumber{16,50}"

这称为审计跟踪或审计日志,通常在数据库中使用触发器或存储过程来创建数据库中被更改的行的副本,并使用用户名和时间戳进行更改。出于法规遵从性原因这样做是很常见的。我没有看到任何为您管理它的包,因为它通常与数据库设计紧密耦合。。您不一定需要每一行或每一个字段的副本,在高度事务性的环境中这样做可能会非常昂贵


尝试用谷歌搜索“审计跟踪”

这被称为审计跟踪或审计日志,通常在数据库中使用触发器或存储过程来创建数据库中被更改的行的副本,其中包含用户名和时间戳。出于法规遵从性原因这样做是很常见的。我没有看到任何为您管理它的包,因为它通常与数据库设计紧密耦合。。您不一定需要每一行或每一个字段的副本,在高度事务性的环境中这样做可能会非常昂贵


试试谷歌搜索“审计跟踪”

谢谢你为一些恰当的术语提供了帮助。即使我在数据库中保留了完整的历史记录,而不是将增量记录到syslog中,我仍然希望直观地将信息减少到只包含更改。是的,这是一个非常简单的数据库报告。是的,但我不希望在通用函数可以执行的情况下为每个对象维护自定义代码。我对将解决方案与数据库紧密耦合也不感兴趣。感谢您介绍了一些合适的术语。即使我在数据库中保留了完整的历史记录,而不是将增量记录到syslog中,我仍然希望直观地将信息减少到只包含更改。是的,这是一个非常简单的数据库报告。是的,但我不希望在通用函数可以执行的情况下为每个对象维护自定义代码。我对将解决方案与数据库紧密耦合也不感兴趣。