程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> EJB設計模式(二)

EJB設計模式(二)

編輯:關於JAVA

為了避免設計模式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;
}

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved