网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > Java
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
本月文章推荐
.Java日期选择控件.
.入门基础 Java参数传递方式.
.配置JBoss 4 JDBC连接.
.use itext to create a html.
.Eclipse插件之Spring IDE.
.concat 方法 (Array).
.用Struts建立MVC应用的介绍.
.ShareName 属性.
.Java性能探寻.
.用.NET构建WindowsCE应用程序.
.如何在Applet中显示图象.
.用Eclipse RCP的IBM Workplace管.
.用Web Service进行企业级的.
.Java新手入门的30个基本概念.
.在Java中如何进行BASE64编码和解.
.比较RIFE与其他Web Framewo.
.超线程多核心下Java多线程编程技.
.Struts1.1b3部分源代码分析..
.在BS系统中使用模态对话框(showM.
.教你一简单办法用Java获得IP地址.

专稿:实战EJB之五 开发实体BMP(EJB 1.1规范)

发表日期:2008-1-5


实战EJB系列



在以后的日子里,将由Jackliu向大家陆续提供一系列EJB教程,有学习EJB的朋友请同步参考EJB相关书籍,实战系列将以例程的方式帮助你理解这些基本的概念,其中将包括:



专稿:实战EJB之五 开发实体BMP(EJB 1.1规范)(图一)
点击查看大图


所有章节完毕后将制作成pdf电子文档,供大家下载


 


实战EJB之五 开发实体BMP(EJB 1.1规范)


前一节介绍了EntityBean的有关介绍,并通过开发、部署实体CMP的例子介绍EJB1.1规范的CMP的有关特性,在这一节中你将了解如下内容:




  • EJB 1.1规范中的BMP
  • 编写一个EJB 1.1 的BMP程序
  • 部署到应用服务器
  • 开发和部署测试程序
  • 运行测试程序


 



EJB 1.1规范中的BMP


根据规范中定义的EJB事务持久性(persistence)的特性被分为容器治理持久性(CMP)和Bean治理持久性(BMP)。虽然使用容器治理持久性给编程带来极大的方便,但是将事务持久性交于容器来控制降低了Bean的开发能力;BMP的Bean具有灵活的业务处理能力和更灵活的持久性控制能力,常用来映射一些复杂的数据视图或很难用CMP实现的复杂逻辑处理。


BMP的寿命周期和CMP的寿命周期治理机制是相同的,不同的是BMP的事务持久性治理机制交于Bean开发者,所以,在创建、更新、删除等数据库操作时,两种类型的Bean的顺序图是不一样的。为了说明这一点,可以从CMP和BMP在钝化/激活顺序图中分析,当然Bean的创建、查找、删除也是不同的:


通过图5-1和5-2的比较,我们很轻易会发现:


CMP:当一个Bean实例被客户引用,并执行一个业务方法后,容器会自动读取Bean的实例字段(还记得我们在上一节在实现一个CMP时,为Bean定义了映射到数据库字段的Public型类字段吗),然后,通过容器与数据库发生关系,保存改变的数据,执行完毕后Bean被钝化,并调用ejbPassviate()方法通知Bean。当客户过一端时间又调用这个Bean的某业务方法时,被钝化的Bean又重新的激活,但是并不是马上执行这个业务方法,而是由EJB对象首先调用ejbActivate()方法通知Bean,Bean实例要激活,然后从数据库中提取数据,并自动将数据值映射到Bean实例,然后调用ejbLoad()方法,实例被再一次初始化,最后才开始执行要执行的业务方法,红色箭头和红色时间块做了明显的表示。


BMP:当一个Bean实例被客户引用,并执行一个业务方法后,容器会执行Bean的ejbStore()方法,并由这个方法把数据保存到数据库中(下面的例子你将会发现,我们不再为
Bean定义全局类变量,而是定义一些私有类变量),执行完毕后Bean被钝化,并调用ejbPassviate()方法通知Bean。当客户过一端时间又调用这个Bean的某业务方法时,被钝化的Bean又重新的激活,但是并不是马上执行这个业务方法,而是由EJB对象首先调用ejbActivate()方法通知Bean,Bean实例要激活,然后调用Bean的ejbLoad()方法,这个方法负责从数据库中提取数据,Bean实例被初始化,最后才开始执行要执行的业务方法。



专稿:实战EJB之五 开发实体BMP(EJB 1.1规范)(图二)
点击查看大图


<图5-1 designtimesp=21804>


 



专稿:实战EJB之五 开发实体BMP(EJB 1.1规范)(图三)
点击查看大图


<图5-2 designtimesp=21815>


BMP Bean要求所有的数据库操作都要由Bean实例完成,这些方法基本上包括:


setXXX():因为BMP不在为容器声明public类型的由容器来治理的映射字段,所以setXX方法需要开发者实现


getXXX(): 取得Bean字段值


ejbCreate():在CMP中,由容器实现,并返回一个NULL值,在BMP中必须由开发者自己实现,返回创建记录的主键值


ejbLoad(): 在CMP中,由容器实现,在BMP中必须由开发者自己实现,以实现组件非持久性状态缓存持久性信息



上一篇:专稿:实战EJB之三 开发会话Bean(有状态会话Bean) 人气:716
下一篇:足球战术之observer及memento篇 人气:576
浏览全部Java的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐