科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道EJB设计模式2

EJB设计模式2

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

为了避免设计模式1的缺点,我们介绍一下封装entity bean值域的value objec的概念。

作者:中国IT实验室 来源:中国IT实验室 2007年9月7日

关键字: EJB

  • 评论
  • 分享微博
  • 分享邮件
 为了避免设计模式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;
  }

查看本文来源

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章