`

EJB3.0笔记-1 Entity回调和监听器

阅读更多
在你执行EntityManager的persist()、merge、remove和find方法时,或者在执行EJB QL查询时,一系列预先定义好的生命周期事件会被触发。Java Persistence规范允许在entity class上设置回调方法,当这些事件发生时,该entity会收到相应的通知。也可以注册一些单独的监听类来拦截这些事件

回调事件
它们代表了entity生命周期中的一个阶段(pre表示之前,post表示之后)
@javax.persistence.PrePersist; @javax.persistence.PostPersist;
@javax.persistence.PreUpdate; @javax.persistence.PostUpdate;
@javax.persistence.PreRemove; @javax.persistence.PostRemove; @javax.persistence.PostLoad(在查询数据或refresh()时会触发)

Entity Class上的回调方法
通过为entity bean 的任何一个public、private、protected或package-protected方法添加注解,当某个接受托管的entity实例触发事件时,entity manager会调用entity bean上被添加了注解的相应方法。回调方法必须返回void,不抛出checked exception,并无传入参数。如:
@PostPersist void afterInsert(){………}
    等价的ORM映射文件
    <entity class=”com.titan.domain.Cabin”>
        <post-persist name=” afterInsert”/>
    </entity>

Entity 监听器
Entity监听器是一种能够拦截entity回调事件的类。它本身不是entity class,它必须有一个公有无参构造函数,监听方法必须返回void,并接受一个Object类型的参数,它就是触发事件的entity实例
    public class TitanAuditLogger{
        @PostPersist void postInsert(Object entity){……..}
    }
    通过@javax.persistence.EntityListeners注解把监听器应用于某个entity class
    @Entity
    @EntityListeners{ TitanAuditLogger.class,其它监听器}
    public class Cabin{….}
    等价XML
    <entity class=”com.titan.domain.Cabin”>
        <entity-listeners>
            <entity-listener class=”com.titan.listeners.TitanAuditLogger”>
                <post-resist name=” postInsert”/>
            </ entity-listener >
        </entity-listeners >
    </entity>
Entity监听器的执行顺序是它们在@EntityListeners注解或ORM XML映射文件中的声明顺序,而任何在entity class上声明的回调方法则会在其后被调用

默认的Entity监听器
可以在ORM映射文件中,通过顶层元素<entity-mappings>下的<entity-listeners>元素,为persistence unit中的每一个entitty class指定一组默认的entity监听器,如:
<entity-mappings>
    <entity-listeners>
            <entity-listeners>
                <entity-listener class=”com.titan.listeners.TitanAuditLogger”>
                    <post-resist name=” postInsert”/>
                </ entity-listener >
            </entity-listeners >
    </entity-listeners>
</entity-mappings>
如果想关闭默认的entity监听器,可以使用@javax.persistence.ExcludeDefaultListeners注解
    @Entity
    @ExcludeDefaultListeners
    public class Cabin{….}
    等价的XML
    <entity class=”com.titan.domain.Cabin”>
        <exclude-default-listeners/>
    </entity>

继承与监听器的关系
如果在一个实体的继承层次中,entity监听器被用于基类,则所有子类都会继承基类的监听器。基类的监听器会先于子类的监听器执行,如果想关闭从父类继承下来的entity监听器,可以使用@javax.persistence.ExcludeSupperclassListeners,如:
@Entity
@ExcludeSupperclassListeners
public class Customer extends Person{……}
0
0
分享到:
评论

相关推荐

    EJB3.0规范-EJB3.0 SPECIFICATION

    EJB3.0规范 EJB3.0 SPECIFICATION 官方规范英文版

    Ejb3.0--4

    NULL 博文链接:https://xiaocong1001.iteye.com/blog/258852

    EJB3.0入门经典(PDF)

    《EJB3.0入门经典》是关于EJB 3.0的专业技术教程,从实用的角度出发,理论联系实际,用9章的篇幅详细讲解了EJB 3.0开发的方法和技巧。《EJB3.0入门经典》内容丰富,讲解由浅入深,全面系统,在讲解EJB 3.0最新开发...

    Ejb3.0--2

    NULL 博文链接:https://xiaocong1001.iteye.com/blog/252686

    EJB3.0--很不错的EJB教程

    很不错的EJB教程,请大家好好珍惜 好好看

    ejb-api-3.0-sources

    ejb-api-3.0-sources ejb3.0资源文件,源代码文件

    agent-ejb-3.0-beta-1-javadoc.jar

    标签:agent-ejb-3.0-beta-1-javadoc.jar,agent,ejb,3.0,beta,1,javadoc,jar包下载,依赖包

    agent-ejb-3.0-beta-1-sources.jar

    标签:agent-ejb-3.0-beta-1-sources.jar,agent,ejb,3.0,beta,1,sources,jar包下载,依赖包

    agent-ejb-3.0-beta-1.jar

    标签:agent-ejb-3.0-beta-1.jar,agent,ejb,3.0,beta,1,jar包下载,依赖包

    agent-car-ejb-3.0-beta-1-sources.jar

    标签:agent-car-ejb-3.0-beta-1-sources.jar,agent,car,ejb,3.0,beta,1,sources,jar包下载,依赖包

    EJB3.0规范和API文档

    ejb-3_0-pfd-spec-persistence ejb-3_0-pfd-spec-simplified ejb-3_0-fr-spec-ejbcore

    EJB3.0入门经典-weblogi

    EJB3.0入门经典-weblogic EJB3.0入门经典-weblogic EJB3.0入门经典-weblogic

    EJB3.0-入门·达内.pdf

    EJB3.0-入门·达内.pdf EJB3.0-入门·达内.pdf

    精通EJB3.0 中文版 1/3

    第二部分重点关注EJB编程的具体内容和过程,向开发者展示了如何使用会话Bean、将会话Bean发布为Web服务、消息驱动Bean;第三部分专注于高级EJB专题;第四部分是附录,收集了EJB组件技术相关的其他内容。

    ejb3.0入门图文教程

    ejb3.0入门图文教程,包括EJB3.0开发Entity.pdf、EJB3.0开发Message Driven Bean.pdf、EJB3.0开发Session Bean.pdf

    ejb3.0实例教程

    不要求像过去那样实现特殊的回调界面或者扩展 EJB 类。所以它 将使 EJB 的开发更像常规的 Java 开发。 作者对 EJB3.0 接触的时间很短,所以一些新的概念和知识理解也难免有误,有些概念和语义把握的不是很准, 希望...

    传智播客EJB3.0_EJB3.0企业开发_Jboss_ppt_pptx_黎活明.rar

    1、传智播客EJB3.0.pptx--&gt;需要office 2007及以上版本才能打开。 2、传智播客EJB3.0.ppt--&gt;是以《传智播客EJB3.0.pptx》为源文件的简单复制与粘贴后的结果,其格式与源文件有些不同,更为简洁,但没有源文件美观。该...

    EJB3.0 实例教程 -- 切片1

    不要求像过去那样实现特殊的回调界面或者扩展EJB类。所以它 将使EJB的开发更像常规的Java 开发。 作者对EJB3.0 接触的时间很短,所以一些新的概念和知识理解也难免有误,有些概念和语义把握的不是很准, 希望在这...

    精通EJB3.0 中文版 3/3

    第二部分重点关注EJB编程的具体内容和过程,向开发者展示了如何使用会话Bean、将会话Bean发布为Web服务、消息驱动Bean;第三部分专注于高级EJB专题;第四部分是附录,收集了EJB组件技术相关的其他内容。

Global site tag (gtag.js) - Google Analytics