我有一个名为Employee的类,其映射到employee.hbm.xml。我有一个新的要求,我应该有一个历史表,即Employee_history,它应该使用lastUpdated和dateCreated等新的额外字段保留Employee表的记录。当我在Employee中创建或更新新记录时,它也应该更新到Employee_History表中。 那么应该采用哪种更好的方法呢? 我非常擅长冬眠,或者可以说今天就开始了。任何帮助都将受到高度赞赏。
答案 0 :(得分:5)
Envers为您做到了这一点:
Envers项目旨在实现对持久化类的轻松审计/版本控制。您需要做的就是使用@Audited注释要审核的持久类或其某些属性。对于每个经审计的实体,将创建一个表,该表将保存对实体所做更改的历史记录。然后,您可以毫不费力地检索和查询历史数据。
答案 1 :(得分:2)
另一种简单的方法是将修改后的记录(偏离旧值)插入历史表中。可能需要对代码进行一些更改。因此,无论您在代码中保存已编辑的记录,只需添加几行即可将现有记录移动到历史记录表中,以及您需要的其他字段(如上次更新等)。