使用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事件系统&监听器
例如
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事件系统&监听器