变相怪杰 发表于 2015-1-18 11:24:27

JAVA网站制作之J2EE计划形式:CMP到BMP形式(一)

认真的记,感觉很紧张根本就没有时间和能力,来对技术知识点进行思考。这样课下就只能对知识进行简单的理解,其实简单的理解就是记忆课堂上讲的知识点,j2ee|计划EJB2.0终究给了我们一个可操纵的容器办理耐久(CMP)模子。只需有大概,在我的EJB项目中我就用CMPbeans;可是,因为这件奇异的事变,我必要把我的实体酿成bean办理(BMP)的。我利用上面的形式让我洁净拖拉的从CMP模子转换到bean办理耐久模子。
在这篇文章中,我们将会商:

1.CMP2.0:产生了甚么变更?

2.Inventory(货品清单)EJB使用程序

3.开辟一个CMPbean

4.移植CMPbean到BMP

CMP2.0:产生了甚么变更?

当EJB问世的时分,CMP引发了很年夜的反应,当EJB2.0问世的时分,又对CMP模子举行了订正,它给了我们真正想要的特征:诸如干系和查询言语尺度化。

与EJB1.1比拟,当我们用EJB2.0写一个CMPbean时,我们的写法有很年夜的分歧。我们创立笼统类,而不是创立被容器办理变量的大众域,我们像JavaBean一样创立笼统的属性(gettersandsetters)。这准予特定厂商的耐久性办理器用他们本人的体例完成数据会见器(accessors)。

这将匡助他们(厂商)提出像如许的逻辑:

●因为他们不挪用任何set办法,以是在ejbStore()中不做任何举措

●他们仅仅改动一个域,以是我们只在UPDATE查询语句中set谁人域

●我们提早装载一些数据,以是当用户用GET办法哀求数据的时分我们才读取他

特地提一个成绩:为何我们必需在笼统类中创立笼统办法?为何耐久性办理器不克不及在派生类中创立办法?

答:我们必需在笼统类中会见这些办法。比方:在ejbCreate()中,我们经由过程传进参数来SET它们。

InventoryEJB使用程序

为了申明该实体模子,我们将看到一个复杂的使用用该实体模子化该货品清单(Inventory)体系。我们使用程序包含以下构成部分:

Inventory实体Bean:这是我们的核心。他将映照到数据库表Inventory,该表记录了条目标名字(主关头字),代价和堆栈中条目标数量

代价无形态会话Bean:该Bean用Inventory实体Bean来失掉条目标代价,它用当地(local)接口来会见该实体

代价客户:这个命令行使用程序在会话(session)上运转该办法来测试一切事情都运转得很好

关头点是当我们把这个Inventory实体从CMP移植到BMP完成时分,甚么也不要做改动

让我们看一下用CMP完成Inventory实体

开辟一个CMPbean

inventoryCMP要我们创立一个笼统类(按照实体申明),XML形貌文件告知框架应当暗射甚么,图一申明了我们的条目看起来是甚么模样





笼统实体bean

该笼统实体有以下属性:

完成了javax.ejb.EntityBean接口

abstractpublicclassInventoryBeanimplementsEntityBean



完成在实体接口中声明的办法

publicvoidsetEntityContext(EntityContextcontext){
ctx=context;
}
publicvoidunsetEntityContext(){
ctx=null;
}
publicvoidejbActivate(){}
publicvoidejbPassivate(){}
publicvoidejbRemove()throwsRemoveException{}
publicvoidejbStore(){}
publicvoidejbLoad(){}



完成ejbCreate()和ejbPostCreate()办法该办法对应于HOME接口中的Create()办法(用笼统set办法set一切参数)

publicStringejbCreate(Stringitem,floatprice,intstock)
throwsCreateException{
setItem(item);
setPrice(price);
setStock(stock);
returnnull;
}



publicvoidejbPostCreate(Stringitem,floatprice,intstock)throwsCreateException{}

完成笼统get和set办法

publicabstractStringgetItem();
publicabstractvoidsetItem(Stringitem);
publicabstractfloatgetPrice();
publicabstractvoidsetPrice(floatprice);
publicabstractintgetStock();
publicabstractvoidsetStock(intstock);



完成一个助手办法来会见实体高低文(在前面的BMPbean中我们将用到它)

publicEntityContextgetEntityContext(){
returnctx;
}



EJB部署形貌符

我们创立了一个CMP实体类,如今该创立部署形貌符了.起首我们将创立一个尺度的"ejb-jar.xml",然后我们必要设置与厂商有关的信息.我们将申明WebLogic6.1部署形貌符,我们选一个.

尺度ejb-jar.xml

基础的实体设置信息:

我们将设置类名,用部分变量,在实体外部它们是部分变量.我们经由过程耐久范例XML标签告知容器该实体是CMP

<entity>
<ejb-name>InventoryBean</ejb-name>
<local-home>InventoryHome</local-home>
<local>Inventory>/local<
<ejb-class>InventoryBean</ejb-class>
<persistence-type>Container</persistence-type>
<prim-key-class>java.lang.String</prim-key-class>
<reentrant>False</reentrant>



接着,我们将告知容器那些域是容器办理的,item域是主键类[未完待续]

最初被命名为Oak,目标设定在家用电器等小型系统的编程语言,来解决诸如电视机、电话、闹钟、烤面包机等家用电器的控制和通讯问题。

再现理想 发表于 2015-1-20 23:58:20

另外编写和运行Java程序需要JDK(包括JRE),在sun的官方网站上有下载,thinking in java第三版用的JDK版本是1.4,现在流行的版本1.5(sun称作J2SE 5.0,汗),不过听说Bruce的TIJ第四版国外已经出来了,是专门为J2SE 5.0而写的。

金色的骷髅 发表于 2015-1-25 10:14:23

一直感觉JAVA很大,很杂,找不到学习方向,前两天在网上找到了这篇文章,感觉不错,给没有方向的我指了一个方向,先不管对不对,做下来再说。

透明 发表于 2015-2-2 21:37:12

是一种将安全性(Security)列为第一优先考虑的语言

不帅 发表于 2015-2-11 14:39:28

一直感觉JAVA很大,很杂,找不到学习方向,前两天在网上找到了这篇文章,感觉不错,给没有方向的我指了一个方向,先不管对不对,做下来再说。

第二个灵魂 发表于 2015-2-25 21:52:28

不过,每次的执行编译后的字节码需要消耗一定的时间,这同时也在一定程度上降低了 Java 程序的运行效率。

变相怪杰 发表于 2015-3-8 06:19:23

你可以去承接一些项目做了,一开始可能有些困难,可是你有技术积累,又考虑周全,接下项目来可以迅速作完,相信大家以后都会来找你的,所以Money就哗啦啦的。。。。。。

山那边是海 发表于 2015-3-11 19:44:24

设计模式是高级程序员真正掌握面向对象核心思想的必修课。设计模式并不是一种具体"技术",它讲述的是思想,它不仅仅展示了接口或抽象类在实际案例中的灵活应用和智慧

兰色精灵 发表于 2015-3-19 10:24:10

Java 编程语言的风格十分接近C、C++语言。

谁可相欹 发表于 2015-3-27 18:09:29

http://www.jdon.com/去下载,或到同济技术论坛的服务器ftp://nro.shtdu.edu.cn去下,安装上有什么问题,可以到论坛上去提问。
页: [1]
查看完整版本: JAVA网站制作之J2EE计划形式:CMP到BMP形式(一)