Hibernate事件监听

来源:互联网 发布:奥运会没人申办知乎 编辑:程序博客网 时间:2024/04/29 00:02

-----------------------------------------------------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的一种扩展机制,可以把你自己的代码织入到框架里面去。

要注意的就是默认的保存的监听器。

 

 

原创粉丝点击