使用Apache OpenJPA开发EJB 3.0应用,第6部分:处理实体生命周期事件的回调 - 编程入门网
使用Apache OpenJPA开发EJB 3.0应用,第6部分:处理实体生命周期事件的回调时间:2011-08-31 IBM 肖菁企业应用开发过程中,经常会存在这样的需求:当企业应用中的某些数据被增 加、删除、修改时,引发一些特定的动作,完成企业应用中的一些特别的要求, 比如企业应用中要完成数据操作日志、处理数据之间的某种关系、或者是完成一 些局部的统计工作等。通常情况下,开发者有两种选择: 开发者提供独立 的代码来处理这种需求; 使用关系型数据库中的“触发器”技 术 , 让开发者指定在特定表中添加、删除、修改数据时引发特定的动作,完成数 据库中数据的处理。 然而这两种方式都有一定的局限性,在第 1 种方式 中,特别设计的代码和主体程序之间的耦合性较高,无法独立维护,很难复用; 第 2 种方式仅仅适用于关系型数据库开发的情况,开发方式比较受局限。 OpenJPA 中提供了另外一种方式来处理这种特殊的需求,即回调方法。回 调方法可以监视实体的整个生命周期,在生命周期的各个时期均可以轻松的加入 开发者自己的代码,处理实际业务中的特殊需求。OpenJPA 中目前支持的实体生 命周期包括:实体持久化之前、实体可以被持久化、实体被加载之后、实体状态 写入数据库之前、实体状态写入数据库之后、实体被删除之前、实体被删除之后 。 OpenJPA 中的回调方法可以在两个层次上实现 : 在实体类中定 义回调方法 开发者在实体类中编写与实际业务需求相匹配的处理方法,通过注释将这 些方法注册到实体生命周期监听机制中,当实体的对应生命周期事件触发时,这 些方法将被调用,从而满足用户的特定业务需求。这种方式适用于那些回调方法 不太多、业务也不复杂的情况,同时这也不是被推荐的一种编程方式。 为实体类提供监听器 开发者除了在实体类中定义回调方法之外,还有一种方式可以将实体的生 命周期事件和 Java 方法联系起来,就是使用实体监听器,它使用类似 Awt 或者 Swing 中的监听机制。开发者提供实体监听器,然后将这些监听器注册到合适的 实体上,实体成为事件发生的源。当实体生命周期事件触发时,这些被注册的实 体监听器将会逐一被激活。使用实体监听器,可以实现监听器的继承、共享、复 用,因此能够适用于比简单使用回调方法更复杂的业务环境下。 实体生命周期相关注释 OpenJPA 中能够为实体生命周期的多个阶段提 供回调支持,包括实体持久化之前、持久化时、被初始化时等。实体生命周期的 每一个阶段在 JPA 中都有相应的回调方法注释,这些注释可以在实体类或者实体 类的监听器中使用,开发者使用这些注释来指派回调发生时实体类中被调用的方 法。 使用Apache OpenJPA开发EJB 3.0应用,第6部分:处理实体生命周期事件的回调(2)时间:2011-08-31 IBM 肖菁OpenJPA 中支持的实体生命周期和它们对应的注释如下 :
|
||||||||||||||||
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |