7.3.2 实现
为了记录日志,我这里给出一个简单实现:在更新之前把数据的全部信息备份在另外一张日志表user_log中,那些没有修改的信息,也保存在日志表中。
我们给出创建user表和user_log表结构的DDL语句,如下所示。
这样,我们在更新操作之前在user表里查找到这条记录,然后把这条旧记录备份到日志表user_log,最后把新记录持久化到日志表即可。
User类的代码大致如下所示。
为了记录日志,我们为日志类增加了一个接口Loggable,如下所示。
那么,UserLog类如下所示。
上述使用Hibernate提供的Annotation配置ORM关系,由于这不是本章重点,大家只要知道有了上述Annotation注解,就可以把User对象及其日志对象持久化到数据库即可,感兴趣的读者可以登录Hibernate官方网站作更深一层次的了解。
现在,我们来编写LogRepository类代码,在update(Object o)方法中,首先执行saveLog(Object o)方法把这条记录前一个状态持久化到日志表中,之后我们调用被修饰对象genericRepository的update(Object o)方法更新改变,代码大致如下所示。