这几天发现Hibernate中的Interceptor 的作用.使我很受感动.现在把他介绍给大家,希望对大家有帮助.也好相互学习
你可以在开启Session时载入一个自定义的Interceptor这个Interceptor会在对应的操作发生之前调用对应的方法,方法是你定义的实现了Interceptor接口的类的方法.Interceptor接口定义如下:
java 代码
- package org.hibernate;
-
- import java.io.Serializable;
- import java.util.Iterator;
-
- import org.hibernate.type.Type;
-
- public interface Interceptor {
-
- public boolean onLoad(Object entity, Serializable id, Object[] state, String[] propertyNames, Type[] types)
- throws CallbackException;
-
-
- public boolean onFlushDirty(Object entity, Serializable id, Object[] currentState, Object[] previousState, String[] propertyNames, Type[] types) throws CallbackException;
-
-
- public boolean onSave(Object entity, Serializable id, Object[] state, String[]propertyNames, Type[] types) throws CallbackException;
-
-
- public void onDelete(Object entity, Serializable id, Object[] state, String[] propertyNames, Type[] types) throws CallbackException;
-
-
- public void preFlush(Iterator entities) throws CallbackException;
-
-
- public void postFlush(Iterator entities) throws CallbackException;
-
-
- public Boolean isTransient(Object entity);
-
-
-
- public int[] findDirty(Object entity, Serializable id, Object[] currentState, Object[] previousState, String[] propertyNames, Type[] types);
-
-
- public Object instantiate(String entityName, EntityMode entityMode, Serializable id)
- throws CallbackException;
-
-
- public String getEntityName(Object object) throws CallbackException;
-
-
- public Object getEntity(String entityName, Serializable id) throws CallbackException;
-
-
- public void afterTransactionBegin(Transaction tx);
-
-
- public void beforeTransactionCompletion(Transaction tx);
-
-
- public void afterTransactionCompletion(Transaction tx);
- }
咱们自定一个MyInterceptor类:
java 代码
- package com.super;
- ....
- public class MyInterceptor implements Interceptor {
- ....
- }
在启用Session时可以载入自订的Interceptor:
- MyInterceptor myInterceptor = new MyInterceptor();
- Session session = sessionFactory.openSession(myInterceptor);
- ....
分享到:
相关推荐
Hibernate API 1 接口类型 1 .访问数据库的各种操作的接口 ...接口。.......Hibernate ...的接口 ...接口。....回调接口 ...Hibernate ...Interceptor 接口。
在本文中,我们将详细介绍 Hibernate 配置接口的概念、组成和使用方法。 1. Configuration 接口 Configuration 接口是 Hibernate 配置接口的核心组件,它用于配置和启动 Hibernate 应用程序。该接口提供了多种方法...
14. **拦截器**:使用Interceptor接口,可以在对象持久化过程中添加自定义逻辑。 15. **CGLIB与JPA支持**:Hibernate 3.2.0 包括对CGLIB代理的支持,以及Java Persistence API(JPA)的部分实现。 通过深入学习...
2. org.hibernate.SessionFactory Interface:从该接口中获得 Session 实例,具备多线程安全和重量级特点,一个数据库对应一个 SessionFactory,其创建及销毁消耗资源多。 3. org.hibernate.Session Interface:提供...
2. **Session接口**:在Hibernate中,`Session`是与数据库交互的主要接口。它负责保存、更新、删除对象,并执行SQL查询。源码中可以找到`org.hibernate.Session`类,了解其内部实现。 3. **Criteria查询**:...
它提供了一套完善的API,包括Session接口(用于数据库交互)、SessionFactory(负责创建Session实例)和Entity类(表示数据库中的表)。Hibernate支持CRUD(Create、Read、Update、Delete)操作,还具备缓存机制、...
Hibernate允许用户注册事件监听器或实现Interceptor接口,对对象的生命周期事件进行拦截和自定义处理,例如在对象保存前进行合法性校验。 通过阅读和理解这份"hibernate中文参考文档",开发者可以全面了解Hibernate...
- **Interceptor**:此接口允许开发者监听Hibernate内部发生的事件,如对象加载、删除、保存和更新,从而实现定制的行为,如记录数据更改日志。 4. **映射接口** - **Type**接口:定义了Hibernate的映射类型,将...
在Java世界中,Hibernate是一款非常重要的对象关系映射(ORM)框架,它极大地简化了数据库操作,让开发者可以使用面向对象的方式来处理数据。本篇将主要围绕`Hibernate3中文参考手册`展开,深入探讨Hibernate的基础...
Struts和Hibernate是两个在Java Web开发中广泛使用的开源框架。Struts主要负责MVC(Model-View-Controller)架构的实现,提供控制层的功能,而Hibernate则是一个强大的对象关系映射(ORM)工具,用于简化数据库操作...
首先,需要在Struts2的配置文件中引入Hibernate的相关拦截器,如`hibernate-interceptor`,这样Action就可以访问到SessionFactory。然后,在Action中注入Session,通过Session进行CRUD操作。 **4. 用户注册** 用户...
Struts、Spring 和 Hibernate 是Java开发中的三大框架,它们各自承担着不同的职责,共同构建了企业级应用的基础架构。这个压缩包提供了这三个框架的中文API文档,对于学习和使用这些框架的开发者来说,是非常宝贵的...
1. **整合配置**:整合Struts2和Hibernate需要在Struts的配置文件中引入Hibernate的相关拦截器,如`hibernate-interceptor`,以便在Action执行时自动开启和关闭Session。 2. **实体类和映射文件**:为了使用...
通过实现`EventListener`接口和`Interceptor`接口,开发者可以自定义在特定操作(如保存、删除等)前后执行的逻辑,实现业务逻辑的扩展。 9. **关联映射** Hibernate支持一对一、一对多、多对一和多对多等各种...
10. **事件和拦截器**:允许在特定的生命周期事件(如加载、保存、更新等)发生时进行自定义操作,通过实现Interceptor接口。 英文API文档则是对Hibernate 3.3.2 GA的所有公开类、接口和方法的详细技术规格说明,...
1. **实现Interceptor接口**:创建一个实现了`Interceptor`接口的类。 2. **配置拦截器**:同样在Hibernate配置文件中指定使用这个自定义拦截器。 ##### 方案三:利用Session的开放性 利用`SessionFactory`提供的`...
2. org.hibernate.SessionFactory Interface:从该接口中获得 Session 实例,具备多线程安全和重量级特点,一个数据库对应一个 SessionFactory,其创建及销毁消耗资源多。 3. org.hibernate.Session Interface:和...
Hibernate通过Interceptor和Event Listeners等机制监控对象状态的变化,自动处理对象的持久化操作,如Save、Update、Delete等。 四、查询语言HQL与Criteria API Hibernate提供两种高级查询语言:HQL(Hibernate ...
12. **拦截器(Interceptor)**:可以通过实现Hibernate的Interceptor接口,在对象的生命周期事件中插入自定义逻辑。 13. **事件监听器(EventListener)**:Hibernate提供了一些预定义的事件,如保存、更新、删除...