Hibernate拦截器与监听器

开发 后端
拦截器与事件都是Hibernate的扩展机制,Interceptor接口是老的实现机制,现在改成事件监听机制;他们都是Hibernate的回调接口,Hibernate在调用save、delete、update...这些方法的时候会回调这个类。

拦截器与事件都是Hibernate的扩展机制,Interceptor接口是老的实现机制,现在改成事件监听机制;他们都是Hibernate的回调接口,Hibernate在调用save、delete、update...这些方法的时候会回调这个类。

Hibernate3.0之前拦截器跟java中的过滤器很像的。

Hibernate3.0之后把拦截器改成事件监听了。

saveOrUpdateEventListener接口:

保存和更新数据的时候会被Hibernate监听到。

例子:

if(event.getObject() instanceof com.cos.User){

//如果这个事件是操作User对象的,就执行if里面的代码

}

把监听器告诉Hibernate:

监听器SaveListener.java:

Java代码

  1. package com.cos.listener;     
  2.     
  3. import org.hibernate.HibernateException;     
  4. import org.hibernate.event.SaveOrUpdateEvent;     
  5. import org.hibernate.event.SaveOrUpdateEventListener;     
  6.     
  7. public class SaveListener implements SaveOrUpdateEventListener {     
  8.     
  9.     @Override    
  10.     public void onSaveOrUpdate(SaveOrUpdateEvent event)     
  11.             throws HibernateException {     
  12.         if(event.getObject() instanceof com.cos.entity.User){     
  13.             System.out.println("保存User之前的操作");     
  14.         }     
  15.     }     

 

Hibernate配置文件:

Xml代码

  1.     "-//Hibernate/Hibernate Configuration DTD 3.0//EN"     
  2.     "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">    
  3. <hibernate-configuration>    
  4.     <session-factory>    
  5.         <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialectproperty>    
  6.         <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driverproperty>    
  7.         <property name="hibernate.connection.url">jdbc:mysql:///testproperty>    
  8.         <property name="hibernate.connection.username">property>    
  9.         <property name="hibernate.connection.password">property>    
  10.         <property name="hibernate.show_sql">trueproperty>    
  11.         <property name="hibernate.hbm2ddl.auto">createproperty>    
  12.         <mapping resource="com/cos/entity/User.hbm.xml"/>    
  13.         <event type="save">    
  14.             <listener class="com.cos.listener.SaveListener"/>    
  15.             <listener class="org.hibernate.event.def.DefaultSaveOrUpdateEventListener"/>    
  16.         event>    
  17.     session-factory>    
  18. hibernate-configuration>    

 

 

 

可以看到两个监听器,一个是自己的监听器、一个是缺省的监听器。两个监听器哪个在前就先执行哪个监听器。

【编辑推荐】

  1. Hibernate批量更新与删除实例浅析
  2. 简述Hibernate Synchronizer学习笔记
  3. Hibernate column属性简介
  4. 概括Hibernate查询语言
  5. Hibernate cartridge学习总结
责任编辑:金贺 来源: ITEYE博客
相关推荐

2012-02-03 13:27:16

2009-09-27 17:46:22

Hibernate监听

2009-09-27 17:37:32

Hibernate拦截

2009-01-03 13:37:26

Oracle监听器Oracle服务器Oracle网络配置

2011-03-21 16:21:49

Oracle监听口令监听器

2009-07-08 17:39:23

Servlet监听器

2009-06-24 16:00:00

2020-04-20 11:09:49

过滤器监听器 Web

2023-09-05 08:58:07

2023-11-01 07:55:03

事件监听器传递数据

2011-11-21 14:21:26

SpringMVCJava框架

2009-07-08 17:02:11

JDK实现调用拦截器

2010-02-22 15:06:31

WCF信道监听器

2009-11-09 10:03:09

WCF通道监听器

2023-01-06 08:55:00

2011-06-01 14:55:24

Android Service 监听器

2010-01-13 09:49:09

注释监听器Listener

2009-07-06 13:48:53

Servlet监听器

2010-04-23 18:00:31

2009-11-18 18:28:27

Oracle监听器
点赞
收藏

51CTO技术栈公众号