假如:对应数据库中某张表,建一个实体bean.
      有一条SQL语句,获取这个表的全部内容,得到一个数据集.最后想把这个数据集中的数据进行处理,把每一行作为实体bean的一个实例然后加到List中.问题:从数据集取出一个数据,给实例的对应属性赋值.
   实现这个,常用做法:obj.setA(ds.getString("columnName"));//利用列名和属性名对应
   这种做法,个人感觉有些问题,因为属性A和columnName对应关系是程序员自己加上去的,在程序是找不到任何依据,即在程序没有任何的配置文件或者可以表明两者关系的数据结构.   隐隐约约感觉这样的程序是有断层的,加上写程序的人好象才是完整的,如果换个程序员,他可能就不知道A和columnName之间的关系,那维护性从何说起?   不知道是我杞人忧天了,还是确实存在问题,如果存在这样问题,应该怎样解决或者避免呢?
   其实我自己也很模糊,不知道该怎么表述心中的疑惑,但还是请各位高手各抒己见,不吝赐教!

解决方案 »

  1.   

    如果程序员不知道“columnName”是啥,请向数据库管理员咨询。
      

  2.   

    其实,常用的做法是
        obj.setA(ds.getString("A"));
    hehe
      

  3.   

    我看这种问题和命名规范有关系.
    set方法命名应该要接上表中的字段名.
      

  4.   

    有时候并不是简单的命名规则就能解决的,
    比如,如果想把实体bean中的数据显示在Web页面上,这时还需要一种人为的头脑中的映射关系,比如Web页面上的"姓名"字段就对应bean中的"name"字段,其实这种对应关系也是很清晰,毕竟是我们比较熟悉的单词,但是如果在某个我不熟知的行业,要显示某一个指标例如"丢包率",这时我们可能给它进行生硬的翻译为英文,即使已经有英汉对照,由于不熟悉,可能过一段时间自己也不知道"丢包率"对应的是哪个属性,这时候的维护可能就有些困难了,更不用说bean中有几十个自己不熟悉的又长又不知所以的属性名了.
    总感觉这种需要人,才完整的程序总有些瑕疵,应该减少人的因素.
      

  5.   

    我记得我写这段程序的时候用一句sql获得表的所有字段名,然后保存在数组里
    循环
     变量1=columnName;
    变量2=“set”+columnName;
    然后用Class.getMethods得到所有method,匹配上名字的就 invoke
    循环结束
    大概是这样
      

  6.   

    to aemon(小乌龟):
    谢谢您的回复.
    您的方法可以很好的解决"可以利用命名规则来达到对应关系"的问题,但是如果象我上面说的问题怎么解决:
    "比如,如果想把实体bean中的数据显示在Web页面上,这时还需要一种人为的头脑中的映射关系,比如Web页面上的"姓名"字段就对应bean中的"name"字段,其实这种对应关系也是很清晰,毕竟是我们比较熟悉的单词,但是如果在某个我不熟知的行业,要显示某一个指标例如"丢包率",这时我们可能给它进行生硬的翻译为英文,即使已经有英汉对照,由于不熟悉,可能过一段时间自己也不知道"丢包率"对应的是哪个属性,这时候的维护可能就有些困难了,更不用说bean中有几十个自己不熟悉的又长又不知所以的属性名了."此时是汉字和英文,要想在命名规则上找出路,好象是不行,不知道除了写配置文件或者写其他表明关系的文件之外还有什么方法.谢谢~~~~~