首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

Hibernate EventListener 中写操作日记

2013-11-08 
Hibernate EventListener 中写操作日志开博了,这可不容易,虽然注册有一段时间了,从Javaeye中也学了好多东

Hibernate EventListener 中写操作日志

    开博了,这可不容易,虽然注册有一段时间了,从Javaeye中也学了好多东西,但自己写博客还是头一篇,这可不大好,呵呵,太久了。如果不是自己的经历写在这里,好像也没什么意思,所以一直都不想写。好不容易好像心血来潮,感觉每天都有点小收获,我就在想,如果每天都记录下来,也是个不少的收获耶。好了,废话不多说。我们开始主题(实际上,我兴奋得,我也不知道我在说什么)。

    最近,在设计一个需求,一个工时的登记模块。工时登记本来是不复杂,大家大部分都登记过。就是记录一下,什么时间做了什么事。但由于客户要求,上级要有对下级的修改权,还有项目经理对工时的管理权,这样就复杂了。可能你登记了,你的领导不认帐,或者,你登记到这个项目,但是项目经理不认为你有干 活。OK,我放开,你们谁爱改就谁改。我记下操作,有问题,该找谁自己找去。我承认这是个很烂的设计,但我没想到更好的主意了。
   
    这样,我们下一步要做的事就是如何保存日志的问题了。在看了JPA + Hibernate 3 CRUD操作历史审计日志的解决方案(附源码)后,我选择了第6点,采用Hibernate 3的新特性 Event-listener 。由于,我在看文章时,漏了一个很重要的一句,这一句,让我浪费了大半天的时间。相当无语。。。。。

    我们用的框架已经配置好了XML文件及默认的事件单元。实际上,我要做的,只是针对我的PO,进行特殊的处理而已。


    但是,一启动就报错了,Bean没办法create。我一开始一起认为,没道理啊,一个很正常的Bean啊。在尝试了好些办法后,我又重新看了一次那个文章,终于看到一段话:引用但也有个缺点就是这样的Event-listener是脱离主容器(比如Spring IoC环境)单独实例化的,无法访问主容器的资源
    我那个无语啊。幸好我后面查了一下,还是可以持久化操作的。我只好把保存的代码从Manager中移到监听里。

引用能够取得运行期详细信息,除了能记录粗粒度的实体的保存删除操作外,还能精确追踪对实体字段修改、实体关联/级联关系的变更,能记录更新前的值、更新后的值,可以生成详细日志。

    这个应该不错,我还没有去试,下次可以试试。

热点排行