站内搜索: 请输入搜索关键词

当前页面: 开发资料首页J2EE 专题EJB设计模式2

EJB设计模式2

摘要: EJB设计模式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;
}

--


Java, java, J2SE, j2se, J2EE, j2ee, J2ME, j2me, ejb, ejb3, JBOSS, jboss, spring, hibernate, jdo, struts, webwork, ajax, AJAX, mysql, MySQL, Oracle, Weblogic, Websphere, scjp, scjd, scwcd 为了避?
↑返回目录
前一篇: EJB设计模式4
后一篇: 使用消息驱动Beans(1)