`
zhouxianglh
  • 浏览: 269020 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

(6)Hibernate 中的监听器和拦截器

阅读更多

Hibernate 就总结这么多,本来还有集合过滤,过滤器这一块的,但这次的例子只有一张表就使用。

 

针对 SaveOrUpate 的监听器 (针对 Save 没有解决)

监听器com.isw2.Bean.MySaveListener.java

/**
 * 继承DefaultSaveOrUpdateEventListener 实现监听器
 * 
 * @author Administrator
 * 
 */
public class MySaveListener extends DefaultSaveOrUpdateEventListener {

	@Override
	public void onSaveOrUpdate(SaveOrUpdateEvent arg0) {
		System.out.println("MySaveListener.onSaveOrUpdate \n\t"
				+ arg0.getObject().toString());
		super.onSaveOrUpdate(arg0);
	}

}

 监听器注册方式1 在hibernate.cfg.xml 中:

<!-- 注册监听器 -->
		<!-- 
			<event type="save-update">
			<listener class="com.isw2.Bean.MySaveListener" />
			</event>
                -->

 监听器注册方式2(类HibernateSessionFactory.java 中 Eclipse 自动生成)

/**
 * 在 SessionFactory 中使用 MySaveListener 监听器
 * 
 * @param interceptor
 * @return
 * @throws HibernateException
 */
public static Session getSessionFactoryListener(Object object)
		throws HibernateException {
	Session session = (Session) threadLocal.get();

	if (session == null || !session.isOpen()) {
		// 设置MySaveListener 监听器
		configuration.setListener("save-update", object);
		sessionFactory = configuration.buildSessionFactory();
		session = (sessionFactory != null) ? sessionFactory
				.openSession() : null;
		threadLocal.set(session);
	}

	return session;
}

 

 

 

拦截器的实现:

com.isw2.Bean.TestInterceptor.java

/**
 * 拦截器 继承类 EmptyInterceptor 重写里面的方法
 * 
 * @author Administrator
 * 
 */
public class TestInterceptor extends EmptyInterceptor {

	@Override
	public boolean onLoad(Object entity, Serializable id, Object[] state,
			String[] propertyNames, Type[] types) {
		System.out.println("TestInterceptor.onLoad......");
		return super.onLoad(entity, id, state, propertyNames, types);
	}

	@Override
	public boolean onSave(Object entity, Serializable id, Object[] state,
			String[] propertyNames, Type[] types) {
		System.out.println("TestInterceptor.onSave........");
		return super.onSave(entity, id, state, propertyNames, types);
	}

}

 使用拦截器(sessionFactory 中和 Session 中):

/**
 * 在 SessionFactory 中使用 Interceptory 拦截器
 * 
 * @param interceptor
 * @return
 * @throws HibernateException
 */
public static Session getSessionFactoryInterceptor(Interceptor interceptor)
		throws HibernateException {
	Session session = (Session) threadLocal.get();

	if (session == null || !session.isOpen()) {
		// 设置Interceptor 拦截器
		configuration.setInterceptor(interceptor);
		sessionFactory = configuration.buildSessionFactory();
		session = (sessionFactory != null) ? sessionFactory
				.openSession(interceptor) : null;
		threadLocal.set(session);
	}

	return session;
}

/**
 * Session 中启用Interceptor
 * 
 * @param interceptor
 * @return
 * @throws HibernateException
 */
public static Session getSessionInterceptor(Interceptor interceptor)
		throws HibernateException {
	Session session = (Session) threadLocal.get();

	if (session == null || !session.isOpen()) {
		if (sessionFactory == null) {
			rebuildSessionFactory();
		}
		session = (sessionFactory != null) ? sessionFactory
				.openSession(interceptor) : null;
		threadLocal.set(session);
	}

	return session;
}

 关于过滤器和集合过滤器可以参考:

http://42087743.iteye.com/blog/305219  

http://blog.csdn.net/javacoffe/archive/2007/08/09/1733579.aspx

 

分享到:
评论

相关推荐

    学习常用知识(java,sql,oracle,ejb,ssh,struts,xml,监听器,拦截器,过滤器)

    在IT领域,掌握Java、SQL、Oracle、EJB、SSH、Struts、XML以及监听器、拦截器和过滤器等技术是至关重要的。这些技术涵盖了Web应用开发的多个层面,对于初学者而言,理解并熟练运用它们能为职业生涯打下坚实的基础。 ...

    拦截器和控制器的区别

    拦截器和过滤器的区别 1、拦截器基于动态代理 , 过滤器基于函数回调 2、拦截器不依赖于servlet容器,通过动态代理实现,过滤器依赖于servlet容器 3、拦截器在方法前后,异常前后等调用,而过滤器只能在请求前和请求...

    Hibernate 中文api 等学习资料

    9. **拦截器和事件监听器**:学习如何自定义行为,比如在对象保存或删除前进行额外操作。 10. **JPA集成**:如果需要,可以了解Hibernate作为Java Persistence API(JPA)提供商的角色。 通过阅读和学习这些资料,...

    浅析JAVA中过滤器、监听器、拦截器的区别

    在Java Web开发中,过滤器(Filter)、监听器(Listener)和拦截器(Interceptor)是三种常见的组件,它们各自承担着不同的职责,本文将详细介绍这三者的概念、用途、实现方式和运行机制,并通过代码示例来进行说明...

    Hibernate中文Api最新参考文档

    此外,Hibernate还提供了事件监听器和拦截器机制,允许自定义操作,如在对象加载、保存或删除前后执行特定逻辑。 总之,Hibernate中文API最新参考文档将帮助开发者掌握如何利用Hibernate的各类功能,实现高效、灵活...

    Hibernate 中文参考文档

    Hibernate允许开发者注册事件监听器或拦截器,以在特定操作前后执行自定义逻辑,如对象的保存、更新和删除。 ### 10. 批量操作与性能优化 为了提高性能,Hibernate提供了批量插入、更新和删除功能,以及延迟加载、...

    hibernate3 chm 格式 中文

    12. **事件监听与拦截器**:介绍如何使用事件监听器和拦截器进行自定义行为扩展。 13. **性能优化**:提供一些最佳实践和技巧,如批处理、延迟加载、预加载等,以提高Hibernate应用的性能。 14. **其他高级特性**...

    Hibernate\hibernate3.2官方中文参考手册PDF

    8. **事件监听器和拦截器**:Hibernate允许用户自定义事件监听器或拦截器,以便在特定的生命周期事件(如对象的保存、更新、删除等)发生时执行自定义逻辑。 9. **实体生命周期**:Hibernate定义了几个关键的实体...

    hibernate 中文参考文档

    最后,文档可能会包含一些高级主题,比如缓存机制、性能优化、事件监听器以及拦截器等,这些都是提升Hibernate应用效率和扩展性的关键点。 总的来说,《Hibernate 中文参考文档》全面覆盖了Hibernate框架的基础到...

    hibernate5.3.7中文帮助文档 中文PDF版 1.67MB

    9. **事件监听和拦截器**:Hibernate允许用户自定义事件监听器和拦截器,对特定操作如保存、更新、删除等进行扩展和定制。 10. **性能优化**:通过批处理、缓存策略、连接池管理等方式,可以优化Hibernate的性能。...

    Hibernate中文参考文档 V3.2.chm

    9. **事件监听器和拦截器**:可以实现对象生命周期中的各个阶段的定制化行为,如对象的保存、更新、删除等。 10. **实体生命周期**:包括瞬时态、持久态、脱管态三种状态,理解这些状态有助于理解Hibernate的工作...

    Hibernate3.1中文帮助文档

    12. **事件监听器**:可以通过实现特定接口或使用注解来定义事件监听器,对对象的操作进行拦截和自定义处理。 13. **拦截器**:拦截器允许在对象的生命周期方法前后插入自定义逻辑,如持久化、加载和更新等。 **...

    Hibernate实战

    事件监听器和拦截器允许在特定操作前后执行自定义逻辑,增强系统的可扩展性。 总之,《Hibernate实战》这本书全面覆盖了Hibernate的基础和进阶内容,对于想要掌握和提升Hibernate使用技能的Java开发者来说,是一本...

    hibernate中英文API文档

    它可能包含了从安装设置到高级特性的全方位指导,如第二级缓存、拦截器、事件监听器、多租户支持等。 4. **Hibernate Getting Started Guide.pdf**: 快速入门指南针对初学者,提供了一个快速理解并开始使用...

    hibernate中文API

    10. **事件监听和拦截器** - Hibernate支持事件监听,可以在特定操作前后执行自定义逻辑。 - 拦截器可以拦截和修改持久化操作,实现如日志记录、权限控制等功能。 总之,"hibernate中文API"文档详细阐述了...

    ssh最新框架搭建,加入拦截器

    3. 配置Web应用的web.xml文件,设置过滤器和监听器。 4. 创建并配置Struts2的核心配置文件struts.xml,定义Action、结果类型和拦截器。 5. 实现业务逻辑,包括Action类、Service接口和实现、DAO接口和实现。 6. 配置...

    Hibernate DOC中文文档(学习Hibernate必备手册)

    8. **高级特性**:涵盖集合映射、延迟加载、代理对象、事件监听器、拦截器、类型转换、多态性处理等进阶话题。 9. **示例和实践**:提供实际应用场景的例子,帮助读者更好地理解和应用Hibernate。 通过阅读这份...

    Hibernate 3.1.2中文文档发布

    9. **事件监听器和拦截器**:Hibernate允许注册监听器和拦截器,以便在对象的生命周期事件(如加载、保存、更新、删除)发生时执行自定义逻辑。 10. **性能优化**:包括批处理、延迟加载、缓存策略等手段,可以帮助...

    Hibernate 手册中文版chm格式

    13. 扩展和自定义:讨论如何扩展Hibernate,如实现自定义类型、事件监听器和拦截器等。 通过学习这个手册,开发者不仅可以掌握Hibernate的基本用法,还能了解到高级特性和最佳实践,从而在实际项目中更加高效地利用...

    hibernate3.3.2中文帮助文档

    12. **事件监听**:Hibernate允许注册事件监听器,监听对象的生命周期事件,如插入、更新、删除等,开发者可以通过实现监听器接口来自定义业务逻辑。 13. **拦截器**:拦截器提供了一个更细粒度的控制点,可以在...

Global site tag (gtag.js) - Google Analytics