由于我刚从ASP转到JSP,进入一家公司,一个有经验的同事带我!
在写BEAN对数据库的时候,我肯定每次都是先把属性BEAN写好,GETTER和SETTER,他刚开始当然觉得只要完成任务就行,之后他慢慢教我一些他的经验,就这个,他说,他不喜欢那样把字段写死
也就是不写GETTER和SETTER属性,它只有一个HASHMAP,对应字段和值,然后用如下类似代码
ResultSetMetaData rsmd = rs.getMetaData(); //rs是一个结果集
while(rs.next()){
for(int i=0;i<rsmd.getColumnCount();i++){
com.dot.gpoa.dqh.UpRingData up = new com.dot.gpoa.dqh.UpRingData(); //up是一个HASHMAP对象
up.setValue(rsmd.getColumnName(i+1),rs.getString(i+1));
这样的话,在JSP就可以直接取字段值,因为你要取什么字段是根据SQL语句来的
这样灵活的取数据库字段信息,就算数据库有变更,增加字段和删除字段,并不影响他!因为我是ASP转过来到的,经验当然没他多,感觉好象有点道理,但所有我看的资料都要有个GETTER和SETTER属性BEAN啊,而且hibernate不正是需要它生成映射文件么!请教一下老鸟,他这样写有什么好处和坏处,可取么??我不是想批判他,只是想搞清楚(他人挺好,教了我很多)
在写BEAN对数据库的时候,我肯定每次都是先把属性BEAN写好,GETTER和SETTER,他刚开始当然觉得只要完成任务就行,之后他慢慢教我一些他的经验,就这个,他说,他不喜欢那样把字段写死
也就是不写GETTER和SETTER属性,它只有一个HASHMAP,对应字段和值,然后用如下类似代码
ResultSetMetaData rsmd = rs.getMetaData(); //rs是一个结果集
while(rs.next()){
for(int i=0;i<rsmd.getColumnCount();i++){
com.dot.gpoa.dqh.UpRingData up = new com.dot.gpoa.dqh.UpRingData(); //up是一个HASHMAP对象
up.setValue(rsmd.getColumnName(i+1),rs.getString(i+1));
这样的话,在JSP就可以直接取字段值,因为你要取什么字段是根据SQL语句来的
这样灵活的取数据库字段信息,就算数据库有变更,增加字段和删除字段,并不影响他!因为我是ASP转过来到的,经验当然没他多,感觉好象有点道理,但所有我看的资料都要有个GETTER和SETTER属性BEAN啊,而且hibernate不正是需要它生成映射文件么!请教一下老鸟,他这样写有什么好处和坏处,可取么??我不是想批判他,只是想搞清楚(他人挺好,教了我很多)
解决方案 »
- struts2搭建问题
- 为什么这个JavaScript动态注入table 在火狐可以显示,在ie不行?(代码已简化)
- struts2里保存在request里的List,怎么在页面取不到
- 如何在自己的网站中加入c2c支付工具,让客户(包括个人)在线支付后可以…………
- Action中使用ActionErrors还是ActionMessages?
- 报HTTP Status 404 - Servlet action is not available 错误
- 搜索数据库的结果rs应该怎么传到JSP页面上去?
- 熟悉jsp的高手帮帮我!!我如何捕获jsp页面中的下拉列表中选中的值和发生的select事件???
- mozilla 中浏览不到<OBJECT id=HTML data=editor/editor.html width=500 height=450 type=text/x-scriptlet></object>的内容
- 编译java文件的时候提示,找不到“import javax.servlet.ServletConfig”
- 怎样让<table>中指定的一个<td>隐藏不显示呢?
- 求教如何在服务器将jsp文件转换成html文件并保存?
其实反射用多了是会对性能有很大影响,但现在的开源框架,比如hibernate和spring都严格控制了反射代码的调用次数。所以性能影响在大部分企业应用中都是可以忽略的,只有在银行或电信一类对性能要求极严的应用中才需要考虑。你同事那种做法在开发过程是会很灵活,但在维护时会有一定问题,尤其是别人来维护他的代码时,毕竟hibernate是公共标准嘛
2.至于灵活性和开发效率,那因为你预先做好配置,自然不用每次都去get,set了,而且当Bean的属性变化的时候也仅需要修改配置就可以.
不知道这样的理解对不对?
我感觉我的做法是很好的体现了对象这个观念,属性BEAN就是一个对象,各个对象的关系在这个属性BEAN也能很好的体现,包括一对一,一对多的关系,他那样做,感觉JAVA中的对象已经不在,只是方便了JDBC操作!
我的理解很肤浅吧,继续听意见,谢谢!
对于bean来说也可以用反射来设值的,放到hashmap里的方式不好,就像.net里的datable一样,用起来可能很方便,要是不是一个人写这两部分,就惨了,还得去看sql语句
struts标签中<bean:write name="" property="">,如果用MAP方法,第二个参数怎么写呢?
struts标签中<bean:write name="" property="">,如果用MAP方法,第二个参数怎么写呢?
-------------------
最近比较忙,没时间上来,呵呵,STRUTS和SPRING,HIBERNATE还在学习中,如果公司现在就要用这个开发,估计美工和老总都要头疼吧,特别是老总,每次都喜欢催啊催的,都认为开发多简单的!!!谢谢朋友们,请继续讨论~