|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
认真的记,感觉很紧张根本就没有时间和能力,来对技术知识点进行思考。这样课下就只能对知识进行简单的理解,其实简单的理解就是记忆课堂上讲的知识点,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,目标设定在家用电器等小型系统的编程语言,来解决诸如电视机、电话、闹钟、烤面包机等家用电器的控制和通讯问题。 |
|