实际上 Entity Bean 在被 find 后也不会 load 所有的属性的。
我的理解是,建议 batch 取回多个属性的值(在一个 method invocation 中),而不是多次调用 getxxx() 方法。
所以你应该在 entity bean 上定义一个 HashMap getFields(Collection fieldCol)
在这个方法中根据传入的 fieldCol 分别调用 getxxx(),将其结果放入到 HashMap 中。
可以用 reflection 得到一个 generic 的方法,如果想偷懒:
ArrayList fields = new ArrayList(3);
fields.add("ID");
fields.add("COUNTRY");
fields.add("DESC");
HashMap getFields(Collection fieldCol)
{
HashMap map = new HashMap(fieldCol.size());
for (Iterator it = fieldCol; it.hasNext();)
{
String fName = (String)it.next();
if(fName.equals("ID"))
map.put(fName, getID());
else if (fName.equals("COUNTRY"))
map.put(fName, getCountry());
...
}
return map;
}
我的理解是,建议 batch 取回多个属性的值(在一个 method invocation 中),而不是多次调用 getxxx() 方法。
所以你应该在 entity bean 上定义一个 HashMap getFields(Collection fieldCol)
在这个方法中根据传入的 fieldCol 分别调用 getxxx(),将其结果放入到 HashMap 中。
可以用 reflection 得到一个 generic 的方法,如果想偷懒:
ArrayList fields = new ArrayList(3);
fields.add("ID");
fields.add("COUNTRY");
fields.add("DESC");
HashMap getFields(Collection fieldCol)
{
HashMap map = new HashMap(fieldCol.size());
for (Iterator it = fieldCol; it.hasNext();)
{
String fName = (String)it.next();
if(fName.equals("ID"))
map.put(fName, getID());
else if (fName.equals("COUNTRY"))
map.put(fName, getCountry());
...
}
return map;
}
解决方案 »
- 留言板怎么出来危害代码
- 求JSP人力资源管理系统
- struts2错误InvocationTargetException
- .net与java的区别
- java生成xml?
- weblogic里Runtime.getRuntime().exec("test.sh")的路径是哪里?可以配置吗?
- 用java运行时出现exception的输入显示
- struts的action中如何访问ApplicationResources.properties文件中的属性值
- jb9+jboss3.2.2调试jsp
- 如何用java生成一个可用的.ts文件
- 诚征高手共同翻译Sun的《J2EE Tutorial》这部巨著!
- 哪里有<一步一步用jbuilder4开发ejb>下载或书买
你看的也是ejbDesignPattern--genericAttibuteAccess吧!那上面也提到了这个方法,好是好,但hard-coding....,我问的问题主要是想了解一下在这种情况下怎么使用Reflection API,还是非常谢谢你,稍后给分!
各位 ejbDesignPattern--genericAttibuteAccess 哪有的下?是电子书吗?如果方便,发一份给我吧,多谢 [email protected]
HashMap getFields(Collection fieldCol)
{
HashMap map = new HashMap(fieldCol.size());
for (Iterator it = fieldCol; it.hasNext();)
{
String fName = (String)it.next();
try{
Method mt=cl.getMethod(fName,null ) ;
Class parameters[]=mt.getParameterTypes() ;
Class returntype=Classmt.getReturnType() ;
Class returnvalue=(returntype)=mt.invoke(cl,parameters) ;
}catch(Exception e){
//handler your exception
.....
}
//handler your return value and put in into "map"
.....
return map ;
}
return map;
}
HashMap getFields(Collection fieldCol)
{
HashMap map = new HashMap(fieldCol.size());
for (Iterator it = fieldCol; it.hasNext();)
{
String fName = (String)it.next();
try{
Class cl=this.getClass(); //后来家的.
Method mt=cl.getMethod(fName,null ) ;
Class parameters[]=mt.getParameterTypes() ;
Class returntype=Classmt.getReturnType() ;
Class returnvalue=(returntype)=mt.invoke(cl,parameters) ;
}catch(Exception e){
//handler your exception
.....
}
//handler your return value and put in into "map"
.....
return map ;
}
return map;
}
这个问题在ejb2.0上有了较好的解决,建议去看一看ejb2.0的规范关于cmp部分的。
主要思想是可以把某几个字段合成一个group来存取。
thank you Anreddy and simoncn!
--没有时间看这篇文章,我的思想是来自 VAJ 的 AccessBean,它是取回所有的属性在一个方法中。我觉得那些 EJB Design Pattern 有一些可取之处,但更为欣赏的是大家对一个 Pattern 的大讨论,正是百花齐放啊!