可以用来记录数据库操作日志,
更新某些通用字段(如操作员、更新时间等。
[list]
[*][b]Interceptors[/b]
通过继承EmptyInterceptor,然后根据需要拦截的操作覆盖相应方法。
然后这样调用即可:
如果使用Spring,只要配置sessionFactory的entityInterceptor。
[*][b]Event System[/b]
Hibernate3新加入的Event/EventListener机制,实现需要监听的Event对应的EventListener(如LoadEventListener),然后在hibernate.cfg.xml做如下配置:
如果使用Spring,配置sessionFactory的eventListeners属性:
[/list]
更新某些通用字段(如操作员、更新时间等。
[list]
[*][b]Interceptors[/b]
通过继承EmptyInterceptor,然后根据需要拦截的操作覆盖相应方法。
然后这样调用即可:
// Session-scoped
Session session = sf.openSession( new AuditInterceptor() );
// SessionFactory-scoped
new Configuration().setInterceptor( new AuditInterceptor() );
如果使用Spring,只要配置sessionFactory的entityInterceptor。
[*][b]Event System[/b]
Hibernate3新加入的Event/EventListener机制,实现需要监听的Event对应的EventListener(如LoadEventListener),然后在hibernate.cfg.xml做如下配置:
<hibernate-configuration>
<session-factory>
...
<event type="load">
<listener class="com.eg.MyLoadListener"/>
<listener class="org.hibernate.event.def.DefaultLoadEventListener"/>
</event>
</session-factory>
</hibernate-configuration>
如果使用Spring,配置sessionFactory的eventListeners属性:
<property name="eventListeners">
<map>
<entry key="post-commit-insert"><ref local="XXXPostInsertEventListener" /></entry>
<entry key="post-commit-update"><ref local="XXXPostUpdateEventListener" /></entry>
<entry key="post-commit-delete"><ref local="XXXPostDeleteEventListener" /></entry>
</map>
</property>
[/list]