网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > Java
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
本月文章推荐
.SCJP认证套题解析之八.
.Java变量的赋值.
.Java运行时多态性的实现.
.J2ME平台构件及开发应用程序示例.
.在Eclipse中创建新的重构功能(组.
.java2html_0.8alpha二进制发布版.
.构建用于正则表达式的抽象 Java .
.[webservices]XFire Web服务的单.
.入门:Java初学者入门要注意的基.
.Java接口的妙用.
.J2EE中的业务逻辑和数据库访问决.
.JAVA虚拟机几个命令行参数说明.
.Tomcat5.5.9的安装配置.
.如何避免Microsoft非标准JavaSDK.
.如何下手学JAVA.
.在canvas类里调用textbox.
.百分之百纯 Java(TM)--名词解释.
.今天学习到的java中的几个知识点.
.详解java源文件涉及到的package问.
.一个简单的定时器应用: VarTime.

EJB设计模式(2)

发表日期:2008-1-5



  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

上一篇:EJB技术的体系结构(1) 人气:2242
下一篇:EJB设计模式(1) 人气:796
浏览全部Java的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐