分享
 
 
 

EJB设计模式2

王朝java/jsp·作者佚名  2006-01-08
窄屏简体版  字體: |||超大  

设计模式2

为了避免设计模式1的缺点,我们介绍一下封装

entity bean值域的value objec的概念。value object,

用某些语言的术语来说,就是一个结构类型,因为他们

和corba的结构类型非常类似。

Value Object code snippet for Company

public class CompanyStruct implements

java.io.Serializable {

public Integer comId; //Primary Key

public String comName;

public String comDescription;

public java.sql.Timestamp mutationDate;

}

Value Object code snippet for Employee

public class EmployeeStruct implements

java.io.Serializable {

public Integer empId; //Primary Key

public Integer comId; //Foreign Key

public String empFirstName;

public String empLastName;

public java.sql.Timestamp mutationDate;

}

现在,公司和雇员的entity bean可以把上面的一个结构类型作为

ejbCreate()的一个参数。由于这个结构封装了entity的所有字段

的值,entity bean只需要一个getdata()和setdata()方法就可以

对所有的字段进行操作。

Code snippet for an Entity Bean’s create()

public Integer ejbCreate(CompanyStruct struct) throws

CreateException {

this.comId = struct.comId;

this.comName = struct.comName;

this.comDescription = struct.comDescription;

this.mutationDate = struct.mutationDate;

return null;

}

Code snippet for an Entity Bean’s getData()

public CompanyStruct getData() {

CompanyStruct result = new CompanyStruct();

result.comId = this.comId;

result.comName = this.comName;

result.comDescription = this.comDescription;

result.mutationDate = this.mutationDate;

return result;

}

Code snippet for an Entity Bean’s setData()

public void setData(CompanyStruct struct) {

this.comName = struct.comName;

this.comDescription = struct.comDescription;

this.mutationDate = struct.mutationDate;;

}

跟设计模式1中使用单独的get()和set()方法去操作特定字段不同,

在设计模式2中,我们避免这种情况而只需要进行一次远程调用就

可以了。现在,只有一个事务通过一次远程调用就操作了所有的数

据。这样,我们就避免了设计模式1的大部分缺点,除了建立bean

之间的关系外。

虽然setdata()方法可以对所有字段赋值,但是,borland appserver

提供了一种智能更新的特性,只有被修改过的字段才会被重新写入数

据库,如果没有字段被修改,那么ejbStore()方法将会被跳过。

borland程序员开发指南(EJB)有更详细的描述。

同样,在entity bean和struct之间存在这重复的代码,比如同

样的字段声明。这意味着任何数据库表结构的修改都会导致

entity beabn和struct的改变,这使得同步entity和struct变得

困难起来。

一个小小的改进可以从一定程度上避免这种情况,

就是在ebCreate()方法中调用setddata()方法,这可以消除一

些冗余的代码。

Code snippet for an Entity Bean’s create()

public Integer ejbCreate(CompanyStruct struct) throws

CreateException {

this.comId = struct.comId; //set the primary key

setData(struct);//this removes some redundant code

return null;

}

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
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- 王朝網路 版權所有