7.3.2 实现

    为了记录日志,我这里给出一个简单实现:在更新之前把数据的全部信息备份在另外一张日志表user_log中,那些没有修改的信息,也保存在日志表中。

    我们给出创建user表和user_log表结构的DDL语句,如下所示。

    figure_0115_0107

    这样,我们在更新操作之前在user表里查找到这条记录,然后把这条旧记录备份到日志表user_log,最后把新记录持久化到日志表即可。

    User类的代码大致如下所示。

    figure_0116_0108

    figure_0117_0109

    为了记录日志,我们为日志类增加了一个接口Loggable,如下所示。

    figure_0117_0110

    那么,UserLog类如下所示。

    figure_0117_0111

    figure_0118_0112

    figure_0119_0113

    上述使用Hibernate提供的Annotation配置ORM关系,由于这不是本章重点,大家只要知道有了上述Annotation注解,就可以把User对象及其日志对象持久化到数据库即可,感兴趣的读者可以登录Hibernate官方网站作更深一层次的了解。

    现在,我们来编写LogRepository类代码,在update(Object o)方法中,首先执行saveLog(Object o)方法把这条记录前一个状态持久化到日志表中,之后我们调用被修饰对象genericRepository的update(Object o)方法更新改变,代码大致如下所示。

    figure_0120_0114