我记录了一些实体的所有更改的历史记录,并且即将实现类似于Envers的机制来自动处理这个问题 . 我的问题是是否使用Hibernate interceptors or their event system?
看起来拦截器有点简单,我需要的只是它 . Hibernate自己的文档建议使用拦截器来“跟踪审计信息” . 但是他们的审计信息不在每个实体的配套表中,而Envers使用我想象的事件系统是有原因的 .
我正在使用Spring 3.0和Hibernate 3.5(最新的稳定版) .
UPDATE :对于这种情况,数据库触发器是不可取的 . 我渴望听到有关hibernate拦截器与审计跟踪/更改历史事件的想法 .
1 回答
我认为两者之间的本质区别在于,您只能在SessionFactory中定义一个Interceptor,但是您可以为特定事件注册许多侦听器 .
我将使用Interceptor,因为我只想要一些非常简单的东西:创建实体时的时间戳(
@Version
注释负责更新lastModified属性) .http://docs.jboss.org/hibernate/core/3.6/reference/en-US/html/events.html#objectstate-interceptors