论坛首页 Java企业应用论坛

请点评jdbc通用访问方法,这样可行吗?

浏览 16353 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (2) :: 隐藏帖 (0)
作者 正文
   发表时间:2008-09-13  
编码就是为了解决问题 , 过多的考虑那些不实际的扩展是没意义的 。

诸如楼主这样 , 适用就好 。
0 请登录后投票
   发表时间:2008-09-18  
你们这样把hibernate和jdbc混用了,如何共用连接池、连接何时关闭?事务等方面如何处理?
0 请登录后投票
   发表时间:2008-09-29  
没认真看,但是认为这段代码极端的丑陋
#    for (int i = 1; i <= rsd.getColumnCount(); i++) { 
#                     switch (rsd.getColumnType(i)) {//通过判断数据类型转换数据 
#                     case 12:// varchar(12) 
#                         map.put(rsd.getColumnName(i), ds.getString(i)); 
#                         break; 
#                     case 1:// char(1) 
#                         map.put(rsd.getColumnName(i), ds.getString(i)); 
#                         break; 
#                     case -7:// bit(-7) 
#                         map.put(rsd.getColumnName(i), Boolean.toString(ds 
#                                 .getBoolean(i))); 
#                         break; 
#                     case 4:// int(4) 
#                         map.put(rsd.getColumnName(i), Integer.toString(ds 
#                                 .getInt(i))); 
#                         break; 
#                     case 5:// smallint(5) 
#                         map.put(rsd.getColumnName(i), Integer.toString(ds 
#                                 .getInt(i))); 
#                         break;   
#                     case 93:// datetime(93) 
#                         if (ds.getString(i) == null) 
#                             map.put(rsd.getColumnName(i), ""); 
#                         else { 
#                             if (ds.getString(i).length() >= 19) { 
#                                 map.put(rsd.getColumnName(i), ds.getString(i) 
#                                         .substring(0, 19)); 
#                             } else { 
#                                 map.put(rsd.getColumnName(i), ds.getString(i) 
#                                         .substring(0, 10)); 
#                             } 
#                         } 
#                         break; 
#                     case 3:// decimal(3) 
#                         map.put(rsd.getColumnName(i), Double.toString(ds 
#                                 .getDouble(i))); 
#                         break; 
#                     default: 
#                         map.put(rsd.getColumnName(i), ds.getString(i)); 
#                         break; 
0 请登录后投票
   发表时间:2008-10-01  
看Spring的JdbcTemplate吧,无论连接的获取、关闭,操作的灵活性,ResultSet的Mapping,都是上上之码。
0 请登录后投票
   发表时间:2008-12-02  
说实话很不好!我了省事情把整个安全性给破坏了.也许这么说有点过分,但确实是这样的.

提几个意见
第一 注意分析切面,不该设置切面的地方不要这么做
第二 像数据库连接这种东西在小系统下也许不会体现它安全方面的重要性,但是你这么写的后果只会给连接丢失更多的机会.

我个人觉得数据库的切面应该是做在连接获取这块的,获取结果和数据更新操作虽然也可以 但是放置的地方和调用的地方要正确,我不赞同主动去调用这个模块 更赞同的是靠回调去注入连接,回调接口里面爱干嘛就干嘛了.

对于你的解析那块 还有很大的改进余地.不要case了 定义一个解析接口,系统维护一个数据库实际字段类型和RS解析类的映射 动态去调用.
就像

数据库字段A 用JAVA的类 com.xxxx.xxx去解析一样.当然你这个com.xxxx.xxx是你解析接口的一个实现. 这样做的好处是扩展性好而且可以对其他数据库进行支持
个人意见
0 请登录后投票
   发表时间:2009-08-12   最后修改:2009-08-12
好处是封装了ResultSet的操作,直接映射成List<Map>
缺点是上层调用时需要看具体的sql才能知道Map里面是什么东东

ps:我维护过两年的一个系统就是这么干的,完全不需要javabean这种东东,不管在service层还是action层还是jsp直接map.get("xxx"),类少了很多,但是维护起来很不方便,后来在我的建议下增加了javabean,增加了一层对map的包装
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics