`

如何使用hibernate的event/eventlistener

阅读更多
http://blog.csdn.net/guosydragon/archive/2007/04/15/1565742.aspx 最近学到这里,有点收获,自己试出来,拿出来献丑,不过对于初学者还是有帮助的,毕竟下中文档在很多地方要钱的,呵呵。。。 下面介绍我学到的: 在我们面对的项目中有很多的操作是重复的,但又是要即时要做的,比如你要发一个贴子,就要设置时间,可能还要计算很多的值,写在业务编码里可能显得冗长,(或许还有更为严重的需要)这时,Listener就发挥它的作用了! 下面从一个实例入手: 准备工作: 1.有一个hibernate小项目; 2。写一个类,原代码如下: package com.Hibernate.interceptor; import java.util.Date; import org.hibernate.event.PostInsertEvent; import org.hibernate.event.def.DefaultPostInsertEventListener; import com.bbs.Board; public class MyPostSaveListener extends DefaultPostInsertEventListener { public void onPostInsert(PostInsertEvent event) { Object entity = event.getEntity(); if(entity instanceof Board){ Board b = (Board)entity; b.setDate(new Date()); } } } 3。再在配置文件(Hiberante.hbm.xml)里加入这么一段话: <listener class="com.Hibernate.interceptor.MyPostSaveListener" type="post-insert"></listener> 这里的type属性有那些你可以在编辑器里按Alt+/就有提示,那些类就去打相应的包咯,作用?它们的类名已经讲得很清楚了,不知道试一下就知道了嘛,呵呵。。。 现在你试一下就知道他的作用了! 自己学到得一点东东,通俗的东东,希望能给你带来方便! 我在前面说到Hibernate的event/eventlistener的作用,没有了解它的据体实现机制。 我在应用中遇到这个问题,就是在一个实体Bean中,要插入的记录的某些字段不能为空,但我想在Listener中对那些不能为空的字段加入对应的值 ,比如时间信息什么的,但显示不能插入,好像那个Listener没有起作用。 于是,我把那些不能为空的值全部设置好,再在Listener里把那些信息进行了更改,最后,我发现在产生了两条记录,一条是插入语句,一条是update语句,这搞得我莫名其妙,为什么会产生两条HQL呢? 最后我在数据库中得到了结果,那就是----那条update是Listener产生的! 也就是说,Listener并没有在Session插入数据之前对实体对象的值进行了更改,而是在记示插入之后再对Listener里重设的属性进行update更改。这样似乎增加了开销,但我对它的性能进行了简单的测试,发现并没有增加太多的开销,可能我的测试没有进行大数据的操作,或没有大数量的操作! 我也想在插入之前对实体对象的属性值进行更改,但我试了很多的类都无发达到效果,如果有谁已经可以把那产生两条语句的操作整成一条语句一次性插入操作,请不吝赐教!谢谢了!
分享到:
评论

相关推荐

    hibernate3.2.5源代码

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

    hibernate_core_API

    7. **Event and Listener**:Hibernate的事件监听机制允许我们在特定操作(如save、update、delete等)前后执行自定义逻辑。通过实现Listener接口并注册,我们可以定制化Hibernate的行为。 8. **Type System**:...

    hibernate jar包和dtd

    7. Event and Listener系统:允许自定义事件处理,如对象的保存、更新、删除等。 8. Type系统:支持多种数据类型之间的转换,如日期、时间、枚举等。 而“dtd”是指文档类型定义(Document Type Definition),在...

    hibernate官网jar包

    15. **事件监听器(EventListener)**:Hibernate 允许注册事件监听器,对特定的持久化事件作出反应,如在对象加载后执行某些逻辑。 综上所述,Hibernate 5.3.1.Final版本提供了全面的ORM功能,使得Java开发者能够...

    Hibernate3.2整套源码

    - **EventListener**:允许自定义事件监听器,以实现特定的行为,比如在对象持久化或删除时触发某些逻辑。 通过对Hibernate 3.2源码的阅读和分析,开发者可以深入理解其内部机制,学习如何优化数据访问,如何处理...

    hibernate类库

    Hibernate 可以通过拦截器(Interceptor)、事件监听器(EventListener)进行功能扩展,实现自定义行为。同时,针对性能优化,可以调整缓存策略、批处理、连接池配置等。 综上所述,Hibernate 类库为Java开发者提供...

    hibernate源码

    10. **EventListener和Interceptor**:允许自定义事件监听器和拦截器,实现特定的业务逻辑,如在数据持久化前后进行操作。 11. **JPA(Java Persistence API)集成**:Hibernate也可作为JPA的实现,提供标准的持久...

    hibernate-release-5.0.12.Final.rar

    Hibernate允许开发者通过实现特定接口(如Interceptor或EventListener)进行定制化操作,如在对象持久化前后执行自定义逻辑。 11. **HQL与JPQL** Hibernate Query Language(HQL)和Java Persistence Query ...

    hibernate源代码

    8. **EventListener** 和 **Interceptors**:这些允许自定义事件处理,如在持久化操作前后执行特定逻辑,实现更细粒度的控制。 9. **Hibernate Tools**:包括逆向工程,可以将现有数据库生成Hibernate映射文件,...

    hibernate-orm.zip

    Hibernate具有良好的扩展性,如插件化的缓存实现(如Ehcache、Infinispan)、拦截器(Interceptor)和事件监听器(EventListener),使得开发者可以根据需求定制和扩展其功能。 10. 最佳实践: 在实际应用中,...

    hibernate api帮助文档.chm

    10. Hibernate事件和监听器:允许开发者在特定操作(如对象加载、保存、删除等)前后执行自定义逻辑,通过实现和注册EventListener子类。 11. Second Level Cache:Hibernate提供了二级缓存机制,可以提高数据访问...

    Hibernate实战

    另外,书中还会涉及 Hibenate 的扩展,如使用拦截器(Interceptor)进行自定义行为,或者利用事件监听器(EventListener)在特定操作前后执行额外逻辑。此外,Spring框架与Hibernate的整合也是常见的应用场景,这...

    hibernate3参考资料

    在Hibernate配置中,通过`&lt;listener type="audit" class="org.hibernate.envers.event.AuditEventListener" /&gt;`来注册该监听器。 ### 5. 版本查询 Envers 提供了API来查询历史数据。例如,我们可以使用`...

    Hibernate

    11. **事件监听器**:Hibernate支持在特定操作(如保存、更新、删除等)前后触发自定义逻辑,通过实现EventListener接口,开发者可以扩展Hibernate的行为。 12. **类型系统**:Hibernate提供了丰富的类型系统,不仅...

    JPA + Hibernate 3 CRUD操作历史审计日志的解决方案

    Hibernate提供了一些预定义的事件,比如`PreInsertEvent`、`PreUpdateEvent`等,我们可以通过实现`EventListener`接口并注册到SessionFactory来监听这些事件。当特定事件触发时,我们的监听器会接收到事件对象,从中...

    hibernate的精华内容

    13. **事件监听器(EventListener)**:Hibernate提供了一些预定义的事件,如保存、更新、删除等,可以注册监听器来响应这些事件。 通过学习这些核心概念并结合提供的Hibernate资料,初学者能够快速掌握如何在Java...

    hibernate-3.2.rar

    通过实现Interceptor接口或使用Event Listener,可以自定义在特定操作前后的处理逻辑,如记录日志、权限验证等。这增强了框架的扩展性和灵活性。 十、总结 Hibernate 3.2以其强大的功能和优秀的性能,成为Java开发...

    Hibernate3.2中文参考文档

    Hibernate允许开发者通过实现Interceptor接口或注册EventListener来拦截对象的生命周期事件,实现自定义逻辑,如日志记录、权限控制等。 九、持久化上下文(Persistence Context) 持久化上下文是Hibernate的核心...

    java hibernate框架代码

    12. **事件监听器(Event Listeners)**:Hibernate支持多种事件,如预加载、加载、预保存、保存、预更新、更新、预删除和删除。开发者可以通过实现相应的Listener接口来监听这些事件。 13. **性能优化**:包括...

Global site tag (gtag.js) - Google Analytics