-----------------------------------------------------hibernate.cfg.xml配置-----------------------------------------------------
<hibernate-configuration>
<session-factory>
<property name="connection.url">jdbc:mysql:///ssh</property>
<property name="connection.username">root</property>
<property name="connection.password">1</property>
<property name="connection.driver_class">
com.mysql.jdbc.Driver
</property>
<property name="dialect">
org.hibernate.dialect.MySQLDialect
</property>
<property name="hbm2ddl.auto">update</property>
<property name="show_sql">true</property>
<property name="format_sql">true</property>
<!-- 确定使用二级缓存 -->
<property name="cache.use_second_level_cache">true</property>
<!-- 二级缓存由哪个类提供 一般使用OS缓存(JBoss缓存) -->
<property name="cache.provider_class">org.hibernate.cache.OSCacheProvider</property>
<mapping resource="model/Dept.hbm.xml" />
<mapping resource="model/User.hbm.xml" />
<!-- 哪些类需要缓存 这是一种配置方法,还可以在映射文件配置
<class-cache usage="read-write" class="model.user"/> -->
<!-- 配置监听-->
<event type="save">
<!-- 自己定义的 -->
<listener class="listener.SaveOrUpdateListener"/>
<!-- 默认的 -->
<listener class="org.hibernate.event.def.DefaultSaveOrUpdateEventListener"/>
</event>
</session-factory>
</hibernate-configuration>
----------------------------------------------------------------监听器类------------------------------------------
package listener;
import model.User;
import org.hibernate.HibernateException;
import org.hibernate.event.SaveOrUpdateEvent;
import org.hibernate.event.SaveOrUpdateEventListener;
@SuppressWarnings("serial")
public class SaveOrUpdateListener implements SaveOrUpdateEventListener {
public void onSaveOrUpdate(SaveOrUpdateEvent event)
throws HibernateException {
System.out.println("-------------start listener-----------------");
Object obj = event.getObject();
System.out.println(event.getObject());
if(obj instanceof User)
{
User user = (User)obj;
System.out.println(user.getId());//这边的取值与你配置的监听器类的顺序有关系
}
System.out.println("-------------end listener-----------------");
}
}
-----------------------------------------------dao-----------------------------------------------------------------------------
//保存单个用户
public void save(User user)throws Exception
{
this.getHibernateTemplate().save(user);
}
-------------------------------------------------------------------------------------------------------------------------------
HIbernate监听器主要是hibernate的一种扩展机制,可以把你自己的代码织入到框架里面去。
要注意的就是默认的保存的监听器。