(entity bean)動態賦值值物件-- Dynamic Create Value Object 模式 (轉)

worldblog發表於2007-12-13
(entity bean)動態賦值值物件-- Dynamic Create Value Object 模式 (轉)[@more@]

from entity baen  to value dynamic create your value
object  :use  value  object


摘要:在應用中,採用+bean++開發,如果你的業務
  介面有大量的setter/getter方法,需要重複大量的賦值語句,本
  文描述瞭如何動態賦值值。



為什麼要動態賦值弱型別值物件?
  J2EE可開發中你可能需要將大量從客戶端截獲的資料賦值你的bean
  中,在將其傳送到ejb,,以減少開銷,每一次都要重複大量的賦
  值語句,是不是感覺到很煩,採用一種合適的策略來消除這種重複的
  工作,是改進你生產的途徑。
 
如何動態賦值弱型別值物件。
 
  解決這個問題你需要確定使用指定的命名。BEAN 屬性 setName() ,
  getName(),ejb在同樣要匹配命名.你可以使用讓他們繼承同樣的介面來
  實現.使用指定的命名模式後,你就可以使用簡單的程式碼實現動態賦值了。



程式碼描述如下:


public interface Author{
  public String getName();
  public void setName(String name);
 
  ....
}



實體bean的本地介面擴充套件業務介面
public interface AuthorLocal extends Author,EJBLocalObject {
}



實體bean本身也介面擴充套件業務介面
public abstract ArticleLocalBean implements Author,EntityBean {


...
}



可戶使用sessionbean 獲得和值物件。
  public Author  getAuthor() {
  try {
  return new AuthorValues(AuthorLocal);
  } catch(Exception e) {
  throw new EJBException("Unable to create Value Object.
  Cause: " + e.getMessage());
  }
  }


 


 


AuthorValues 實現Author介面,在構造器中實現資料賦值


public class AuthorValues implements Author{


  ....


  public AuthorValues(Author author) throws Exception {
  Class c = this.getClass();
  String methodName = null;
  Object[] parameter = new Object[1];
  Class[] returnType = new Class[1];


  Method[] methods = Author.class.getMethods();
  for (int i = 0; i < methods.length; i++) {
  if (methods[i].getName().startsWith("get")) {
  methodName = "set" + methods[i].getName().substring(3);
  returnType[0] = methods[i].getReturnType();
  Method localMethod = c.getMethod(methodName, returnType);
  parameter[0] = methods[i].invoke(artikel, new Object[] {});
  localMethod.invoke(this, parameter);
  }
}


  }



  public String getName() {
  return this.name;
  }
  public void setName(String name) {
  this.name = name;
  }


  ...



正如你所看到的,實現動態賦值是很簡單的。我將在下一篇文章中講解主鍵產生


器模式



歡迎大家來討論。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-992979/,如需轉載,請註明出處,否則將追究法律責任。

相關文章