ITPub博客

首页 > 应用开发 > IT综合 > (entity bean)动态赋值值对象-- Dynamic Create Value Object 模式 (转)

(entity bean)动态赋值值对象-- Dynamic Create Value Object 模式 (转)

原创 IT综合 作者:worldblog 时间:2007-12-13 16:17:26 0 删除 编辑
(entity bean)动态赋值值对象-- Dynamic Create Value Object 模式 (转)[@more@]

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


摘要:在J2EE应用中,采用JSP+bean+servlet+EJB开发,如果你的业务
  接口有大量的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/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
  • 博文量
    6241
  • 访问量
    2405190