首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网络技术 > 网络基础 >

系统的domain批改记录log

2012-10-25 
系统的domain修改记录log1、要求的系统功能???? 系统采用spring + hibernate。???? 对对象的属性修改进行记

系统的domain修改记录log

1、要求的系统功能

???? 系统采用spring + hibernate。

???? 对对象的属性修改进行记录,记录的内容包括:类名、对象ID、修改时间、修改的属性名、修改前的值和修改后的值。

???? 对新增对象的属性进行记录。记录的内容包括:类名、对象ID、增加时间、属性名、插入的值。

???? 对删除对象的属性进行记录。记录的内容包括:类名、对象ID、删除时间、属性名、值。

???? 另外的要求,只对某一些类进行记录。如果有一个类如Order,它有Order Line,那么OrderLine的修改应该归入Order类中。

2、实现:

??? a)新建一个接口,Logable,

??? b)新建hibernate的监听类,用来监听onSave,onFlushDirty, onDelete, afterTransactionComminted四个方法

??? 分别用来:取得对象的插入数据、对象的更新数据、对象的删除数据、在成功commit后将写log。(关于这部份的操作,我们让HistoryStorage类来做)

?? 在spring的配置文件中,关于hibernate的配置中加入这个监听器。

?? 从spring的源码中,我们可以看到:这个监听器是属于session的,所以不用做异步处理。

?? c)我们在HistoryStorage中,都是将属性转化成String格式,然后存储在N个EntityLog类中(有多少个Logable对象进行修改,就有多少个EntityLog)。

?? d)写log。要有两个步骤:写数据库和将操作信息写进文件进行存储。

??? 将EntityLog保存成json的格式。存储的地点根据对应的存储方式来决定。(对象的存储方式在配置文件中设定)

?? 由存储方式生成存储路径,并将json数据写入之后,将类名、对象ID、操作类型(增删改)和存储路径写入数据库。

? e)读log。有两种方式的读log:读对象的修改统计和某一次修改的具体信息

?? 读修改统计:从log数据表中读出log信息。

?? 读一次的具体修改信息:从存储路径读出json数据,转化为EntityLog对象,用户自定义输出格式。

?

这其中,用户可以自定义的地方是:

1、LogWriter/LogReader:getPath和write方法/parsePath和reader方法

2、用户页面如何显示Log的统计和log的详细信息

?

明天贴代码

?

?

?

?

?

1 楼 Jerrick 2011-12-01   说好的代码呢

热点排行