JSPCN主页 | JSP空间 | 网站制作 | JSP下载 | JSP论坛 | JSP教程 | 关于JSPCN | 联系我们
JSP虚拟主机,jsp空间,java空间,java虚拟空间,详细请点击进入
做最专业的JSP中文网站 当前位置首页--JAVA技术--EJB  
文章搜索:
关键字 标题
  
JSP中文网内容管理系统(JCMS)
JSP虚拟主机
网络笔记本
网摘,图片,笔记收藏
虚拟服务器

JSPCN文章目录分类
JSP配置[219]JSP基础[136]
中文问题[69]上传问题[27]
JAVABEAN[46]数据库[212]
文件操作[126]图片声音[17]
JSP其他[57]时间相关[16]
JAVAMAIL[72]STRUTS[144]
开发工具[28]教程系列[157]
JSP实例[89]
JAVA基础[421]APPLET[78]
JAVA网络[179]Applica[115]
Servlet[98]XML[163]
J2ME[257]J2EE[374]
考试相关[63]JAVA线程[90]
EJB[261]Swing[26]
Java API[141]声音图片[28]
异常处理[33]JAVA实例[290]
JAVA类[139]SUN[89]
Hibernate[6]JMX[8]
Spring[34]
本版推荐文章 
本版热点文章 
相关文章链接 
 
EJB设计模式2
作者:未知     文章来源:www.jspcn.net
访问次数:353次     加入时间:2005年01月19日
设计模式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;
}
 
Copyright © 2002-2005 JSPCN.net. All rights reserved.
JSP中文网    备案序号:蜀ICP备05001583号
成都恒海科技发展有限公司    成都市一环路南二段6号新瑞楼三楼8号