`
oufeng1983
  • 浏览: 25122 次
社区版块
存档分类
最新评论

Hibernate中的Interceptor 接口

阅读更多
 

这几天发现Hibernate中的Interceptor 的作用.使我很受感动.现在把他介绍给大家,希望对大家有帮助.也好相互学习

你可以在开启Session时载入一个自定义的Interceptor这个Interceptor会在对应的操作发生之前调用对应的方法,方法是你定义的实现了Interceptor接口的类的方法.Interceptor接口定义如下:

java 代码
  1. package org.hibernate;          
  2.          
  3. import java.io.Serializable;          
  4. import java.util.Iterator;          
  5.          
  6. import org.hibernate.type.Type;          
  7.          
  8. public interface Interceptor {          
  9.     // 载入对象前执行          
  10.     public      boolean onLoad(Object entity, Serializable id, Object[] state, String[] propertyNames, Type[] types)           
  11.       throws CallbackException;          
  12.          
  13.     // flush 时,如果发现有Dirty data,则执行此方法          
  14.     public      boolean onFlushDirty(Object entity, Serializable id, Object[] currentState, Object[] previousState,        String[] propertyNames, Type[] types) throws CallbackException;          
  15.          
  16.     // 保存对名象前执行          
  17.     public       boolean onSave(Object entity, Serializable id, Object[] state, String[]propertyNames, Type[] types)          throws CallbackException;          
  18.          
  19.     // 刪除对象前执行          
  20.     public    void onDelete(Object entity, Serializable id, Object[] state, String[] propertyNames, Type[] types)    throws CallbackException;          
  21.          
  22.     // 在 flush 前执行          
  23.     public void preFlush(Iterator entities) throws CallbackException;          
  24.          
  25.     // 在 flush 后执行          
  26.     public void postFlush(Iterator entities) throws CallbackException;          
  27.            
  28.     // 判断传入的对象是否为 transient 状态          
  29.     public Boolean isTransient(Object entity);          
  30.          
  31.     // flush 前呼叫这个法判断 Dirty data          
  32.     // 传回Dirty data属性索引或null          
  33.     public      int[] findDirty(Object entity, Serializable id, Object[] currentState, Object[] previousState,    String[] propertyNames, Type[] types);          
  34.          
  35.     // 手动创建对象实体,如果传回 null,則使用预定的建造方法建立实例例          
  36.     public Object instantiate(String entityName, EntityMode entityMode, Serializable id)           
  37.       throws CallbackException;          
  38.          
  39.     // 传回对象名称     
  40.   public String getEntityName(Object object) throws CallbackException;          
  41.          
  42.     // 取得实例化对象          
  43.     public Object getEntity(String entityName, Serializable id) throws CallbackException;          
  44.          
  45.     // beginTransaction() 之后执行          
  46.     public void afterTransactionBegin(Transaction tx);          
  47.          
  48.     // 在事务完成前执行          
  49.     public void beforeTransactionCompletion(Transaction tx);          
  50.          
  51.     // 在事务完成后执行          
  52.     public void afterTransactionCompletion(Transaction tx);          
  53. }        

咱们自定一个MyInterceptor类:

java 代码
  1. package com.super;   
  2. ....   
  3. public class MyInterceptor implements Interceptor {   
  4.     ....   
  5. }  

 在启用Session时可以载入自订的Interceptor:

  1. MyInterceptor myInterceptor = new MyInterceptor();   
  2. Session session = sessionFactory.openSession(myInterceptor);   
  3. ....  
分享到:
评论

相关推荐

    Hibernate 中文api文档下载

    Hibernate API 1 接口类型 1 .访问数据库的各种操作的接口 ...接口。.......Hibernate ...的接口 ...接口。....回调接口 ...Hibernate ...Interceptor 接口。

    configuration接口

    在本文中,我们将详细介绍 Hibernate 配置接口的概念、组成和使用方法。 1. Configuration 接口 Configuration 接口是 Hibernate 配置接口的核心组件,它用于配置和启动 Hibernate 应用程序。该接口提供了多种方法...

    Hibernate 3.2.0 中文官方文档

    14. **拦截器**:使用Interceptor接口,可以在对象持久化过程中添加自定义逻辑。 15. **CGLIB与JPA支持**:Hibernate 3.2.0 包括对CGLIB代理的支持,以及Java Persistence API(JPA)的部分实现。 通过深入学习...

    hibernate(api 介绍).pdf

    2. org.hibernate.SessionFactory Interface:从该接口中获得 Session 实例,具备多线程安全和重量级特点,一个数据库对应一个 SessionFactory,其创建及销毁消耗资源多。 3. org.hibernate.Session Interface:提供...

    hibernate3.2_src官方源码

    2. **Session接口**:在Hibernate中,`Session`是与数据库交互的主要接口。它负责保存、更新、删除对象,并执行SQL查询。源码中可以找到`org.hibernate.Session`类,了解其内部实现。 3. **Criteria查询**:...

    Hibernate与struts2结合使用的demo

    它提供了一套完善的API,包括Session接口(用于数据库交互)、SessionFactory(负责创建Session实例)和Entity类(表示数据库中的表)。Hibernate支持CRUD(Create、Read、Update、Delete)操作,还具备缓存机制、...

    hibernate中文参考文档

    Hibernate允许用户注册事件监听器或实现Interceptor接口,对对象的生命周期事件进行拦截和自定义处理,例如在对象保存前进行合法性校验。 通过阅读和理解这份"hibernate中文参考文档",开发者可以全面了解Hibernate...

    hibernate(api_介绍)

    - **Interceptor**:此接口允许开发者监听Hibernate内部发生的事件,如对象加载、删除、保存和更新,从而实现定制的行为,如记录数据更改日志。 4. **映射接口** - **Type**接口:定义了Hibernate的映射类型,将...

    Hibernate中文学习资料

    在Java世界中,Hibernate是一款非常重要的对象关系映射(ORM)框架,它极大地简化了数据库操作,让开发者可以使用面向对象的方式来处理数据。本篇将主要围绕`Hibernate3中文参考手册`展开,深入探讨Hibernate的基础...

    struts+hibernate整合jar包

    Struts和Hibernate是两个在Java Web开发中广泛使用的开源框架。Struts主要负责MVC(Model-View-Controller)架构的实现,提供控制层的功能,而Hibernate则是一个强大的对象关系映射(ORM)工具,用于简化数据库操作...

    struts2与hibernate整合单表增删改查(超完整)

    首先,需要在Struts2的配置文件中引入Hibernate的相关拦截器,如`hibernate-interceptor`,这样Action就可以访问到SessionFactory。然后,在Action中注入Session,通过Session进行CRUD操作。 **4. 用户注册** 用户...

    struts spring hibernate 中文api

    Struts、Spring 和 Hibernate 是Java开发中的三大框架,它们各自承担着不同的职责,共同构建了企业级应用的基础架构。这个压缩包提供了这三个框架的中文API文档,对于学习和使用这些框架的开发者来说,是非常宝贵的...

    struts2+hibernate整合增删改查加注册登录Demo包含数据库自动建表语句

    1. **整合配置**:整合Struts2和Hibernate需要在Struts的配置文件中引入Hibernate的相关拦截器,如`hibernate-interceptor`,以便在Action执行时自动开启和关闭Session。 2. **实体类和映射文件**:为了使用...

    hibernate3.2.5源代码

    通过实现`EventListener`接口和`Interceptor`接口,开发者可以自定义在特定操作(如保存、删除等)前后执行的逻辑,实现业务逻辑的扩展。 9. **关联映射** Hibernate支持一对一、一对多、多对一和多对多等各种...

    hibernate3.3.2GA 中文参考手册+英文API

    10. **事件和拦截器**:允许在特定的生命周期事件(如加载、保存、更新等)发生时进行自定义操作,通过实现Interceptor接口。 英文API文档则是对Hibernate 3.3.2 GA的所有公开类、接口和方法的详细技术规格说明,...

    hibernate实现动态表查询的多种解决方案

    1. **实现Interceptor接口**:创建一个实现了`Interceptor`接口的类。 2. **配置拦截器**:同样在Hibernate配置文件中指定使用这个自定义拦截器。 ##### 方案三:利用Session的开放性 利用`SessionFactory`提供的`...

    hibernate(api 介绍).docx

    2. org.hibernate.SessionFactory Interface:从该接口中获得 Session 实例,具备多线程安全和重量级特点,一个数据库对应一个 SessionFactory,其创建及销毁消耗资源多。 3. org.hibernate.Session Interface:和...

    hibernate源码

    Hibernate通过Interceptor和Event Listeners等机制监控对象状态的变化,自动处理对象的持久化操作,如Save、Update、Delete等。 四、查询语言HQL与Criteria API Hibernate提供两种高级查询语言:HQL(Hibernate ...

    hibernate的精华内容

    12. **拦截器(Interceptor)**:可以通过实现Hibernate的Interceptor接口,在对象的生命周期事件中插入自定义逻辑。 13. **事件监听器(EventListener)**:Hibernate提供了一些预定义的事件,如保存、更新、删除...

Global site tag (gtag.js) - Google Analytics