快速业务通道

EJB设计模式(二) - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-18

EJB设计模式(二)

时间:2011-03-25

为了避免设计模式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; }

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号