MySQL / Java特定领域的审计

时间:2011-12-05 06:49:30

标签: java mysql auditing

我有几张表可能会对某些字段进行更新。

我想保留不同领域的变化历史不同的字段有不同的类型,但我不想在“审核”表格中创建许多不同的列。

所以我虽然应该使用序列化(我经常在PHP中使用它),但我不确定它在Java / MySQL中的效率如何(我没有使用任何数据框架等)。如果序列化,那么到底是什么? XML / JSON?

我想到了两张桌子:

  • AuditEntityProperty(Id(PK),EntityId(FK),PropertyName, From,To ,DateTime,Username)
  • AuditEntity(EntityId(PK),EntityName)

From / To是我当前遇到的问题,我不知道如何处理。 我倾向于XML并使用TEXT作为两者的数据类型。想法?

1 个答案:

答案 0 :(得分:1)

我建议使用XML。

我的表结构:

Audit_id,operation,preImage,postImage,userId,datetime,entityName,timestamp

然后我会将此映射为一个AuditBean,我会使用JPA,如果我有一个选项,则使用Hibernate,使用Spring AOP在更新表结构时更新审计表。

一个表插入,它将具有preImage和postImage。

对于XML生成,我认为XStream是最容易使用的之一。

所有需要审核的表,我都会将它们标记为XMLConvertable(这样我可以很容易地获得Class Alias,以及XStream的其他别名字段)和Auditable(这样我的AOP代码可以从中提取preImage)数据库)