您的位置:首页 > 其它

hibernate event使用总结

2008-06-03 23:00 323 查看
使用org.hibernate.event.Postbao的接口
例如
public class SavaOrUpdateListener implements PostInsertEventListener{

private static final long serialVersionUID = 1L;
public void onPostInsert(PostInsertEvent event){

System.out.println("event=============="+event.getEntity());//当前保存的实体
System.out.println("event=============="+event.getId());//改实体的id
System.out.println("event=============="+event.getPersister());//SingleTableEntityPersister(com.redsaga.domain.User)
System.out.println("event=============="+event.getState());

}
}

注意:在保存和修改的时候都会调用此方法很可能造成死循环

在hibernate.cfg下加上
<event type="post-commit-insert">
<listener class="com.redsaga.busness.event.SavaOrUpdateListener"/>
</event>
就可以了

在spring使用只有在hibernate3.1才加的新功能
<property name="eventListeners">
<map>
<entry key="post-commit-insert"><ref bean="SavaOrUpdateListener" /></entry>
</map>
</property>
<bean id="SavaOrUpdateListener" class="hibernate.event.SavaOrUpdateListener">
</bean>

或者
<property name="eventListeners">
<map>
<entry key="post-commit-insert"><bean class="hibernate.event.SavaOrUpdateListener" /></entry>
</map>
</property>

<event type="save">在调用session.save是在生成sql前发生在调用session.saveOrUpdate不使用

其他的使用
<event type="post-commit-update">
</entry>
<event type="post-commit-delete" >
</entry>
auto-flush
merge
create
create-onflush
delete
dirty-check
evict flush
flush-entity
load
load-collection
lock
refresh
replicate
save-update
save
update
pre-load
pre-update
pre-insert
pre-delete
post-load
post-update
post-insert
post-delete
post-commit-update
post-commit-insert
post-commit-delete

Hibernate事件系统&监听器
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: