分享
 
 
 

j2ee设计模式:CMP到BMP模式(一)

王朝java/jsp·作者佚名  2008-05-31
窄屏简体版  字體: |||超大  

EJB2.0终于给了我们一个可操作的容器管理持久(CMP)模型。只要有可能,在我的EJB项目中我就用CMP beans;但是,由于这件奇怪的事情,我需要把我的实体变成bean管理(BMP)的。我使用下面的模式让我干净利落的从CMP模型转换到bean管理持久模型。

在这篇文章中,我们将讨论:

1.CMP 2.0: 发生了什么变化?

2.Inventory(货物清单)EJB应用程序

3.开发一个CMP bean

4.移植CMP bean到BMP

cmp 2.0: 发生了什么变化?

当EJB问世的时候,CMP引起了很大的反响,当EJB2.0问世的时候,又对CMP模型进行了修订,它给了我们真正想要的特性:诸如关系和查询语言标准化。

与EJB1.1相比,当我们用EJB2.0写一个CMP bean时,我们的写法有很大的不同。我们创建抽象类,而不是创建被容器管理变量的公共域,我们像javaBean一样创建抽象的属性(getters and setters)。这准许特定厂商的持久性管理器用他们自己的方式实现数据访问器(accessors)。

这将帮助他们(厂商)提出像这样的逻辑:

●由于他们不调用任何set方法,所以在ejbStore()中不做任何动作

●他们仅仅改变一个域,所以我们只在UPDATE查询语句中set那个域

●我们延迟装载一些数据,所以当用户用GET方法请求数据的时候我们才读取他

顺便提一个问题:为什么我们必须在抽象类中创建抽象方法?为什么持久性管理器不能在派生类中创建方法?

答:我们必须在抽象类中访问这些方法。例如:在ejbCreate()中,我们通过传入参数来SET它们。

Inventory EJB 应用程序

为了说明该实体模型,我们将看到一个简单的应用用该实体模型化该货物清单(Inventory)系统。我们应用程序包括以下组成部分:

inventory实体bean: 这是我们的焦点。他将映射到数据库表Inventory,该表纪录了条目的名字(主关键字),价格和仓库中条目的数目

价格无状态会话bean:该Bean用Inventory实体Bean来得到条目的价格,它用本地(local)接口来访问该实体

价格客户: 这个命令行应用程序在会话(session)上运行该方法来测试所有工作都运行得很好

关键点是当我们把这个Inventory实体从 CMP移植到BMP实现时候,什么也不要做改变

让我们看一下用CMP实现Inventory实体

开发一个cmp bean

inventory CMP要我们创建一个抽象类(依照实体说明),xml描述文件告诉框架应该影射什么,图一说明了我们的条目看起来是什么样子

图一

抽象实体bean

该抽象实体有下列属性:

实现了javax.ejb.EntityBean接口

abstract public class InventoryBean implements EntityBean

实现在实体接口中声明的方法

public void setEntityContext(EntityContext context) {

ctx = context;

}

public void unsetEntityContext() {

ctx = null;

}

public void ejbActivate() {}

public void ejbPassivate() {}

public void ejbRemove() throws RemoveException {}

public void ejbStore() {}

public void ejbLoad() {}

实现ejbCreate()和ejbPostCreate()方法该方法对应于HOME接口中的Create()方法(用抽象set方法set所有参数)

public String ejbCreate(String item, float PRice, int stock) throws CreateException {

setItem(item);

setPrice(price);

setStock(stock);

return null;

}

public void ejbPostCreate(String item, float price, int stock) throws CreateException {}

实现抽象get和set方法

public abstract String getItem();

public abstract void setItem(String item);

public abstract float getPrice();

public abstract void setPrice(float price);

public abstract int getStock();

public abstract void setStock(int stock);

实现一个助手方法来访问实体上下文(在后面的BMPbean中我们将用到它)

public EntityContext getEntityContext() {

return ctx;

}

ejb部署描述符

我们创建了一个CMP实体类,现在该创建部署描述符了.首先我们将创建一个标准的"ejb-jar.xml",然后我们需要配置与厂商有关的信息.我们将说明WebLogic 6.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域是主键类:

原文:http://www.onjava.com/pub/a/onjava/2002/04/10/j2eedesign.Html

matrix开源技术经Onjava授权翻译并发布.

如果你对此文章有任何看法或建议,请到Matrix论坛发表您的意见.

注明: 如果对matrix的翻译文章系列感兴趣,请点击oreilly和javaworld文章翻译计划查看详细情况

您也可以点击-minpeng_2001查看翻译作者的详细信息.进入讨论组讨论。

(出处:http://www.knowsky.com)

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有