免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2280 | 回复: 0
打印 上一主题 下一主题

封装ResultSet结果集 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-09-22 09:42 |只看该作者 |倒序浏览
心得:
  类似于像Hiberante之类的进行数据库的封装。我不想再直接使用ResultSet了。
以前的做法是:我在JAVABEAN中直接返回了一个ResultSet出来。然后我在JSP页面中再使用SQL中的这个结果集输出结果对象。
这样的一个不好的地方:JSP本来是View层的东西没有必要跟JAVA。SQL之类的东西打交道的。所以出现了所谓的数据库封装技术。
我在我的JAVABEAN或直接在DAO层将数据库的ResultSet输出进行封装到一个LIST中去!
然后我的JSP页面是可以直接使用LIST来存储数据。进行分离!
我的代码如下:
/**FullName:    executeQuery
     * Description: 执行SELECT操作,数据库层进行ResultSet的封装
     * @param        SELECT语句
     * @return        List
     * @author zjltianya
     * @create Date : 2009-09-18
     * */
    @SuppressWarnings("unchecked")
    public List executeQuery(String sql) {
        List rsall = new ArrayList();
        Map rsTree;
        Statement stmt = null;
        ResultSet rs = null;
        Connection conn = null;
        try {
            conn = this.getConnection();            
            if (dbVersion == "MySQL"){
                stmt = conn.createStatement();
            }else{
                stmt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);
            }
            rs = stmt.executeQuery(sql);
            ResultSetMetaData rsmd = rs.getMetaData();
            int numberOfColumns = rsmd.getColumnCount();
            while(rs.next()) {
                rsTree = new HashMap(numberOfColumns);
                for(int r=1;r以下是一位网友写的原话我转载过来总结学习:
但是很多网友在封装时,却喜欢返回结果集(ResultSet对象),那么这个封装就没有意义了。
1. 又是直接操作核心数据库类,跟封装前几乎没什么变化。
2. 结果集总是依赖于它使用的连接(Connection)对象。因此当连接对象在方法内被关闭后,你返回的ResultSet就没有用了。确实如此。如果想返回ResultSet的话就不能关闭连接)
如果真的要获得查询数据库的结果集,就把结果集对象内的所有数据,转储到以Map为元素的List对象内。
当然,这种方式,不能适应大数据量的查询,不过如果真的碰到大数据量的查询,那用什么封装都不好,还是得直接数据库操作. :)))
第二句话说得有道理。为什么大的网站像阿里巴巴这样的网站使用J2EE效果不是很理想呢。原因我想也是这样的
也有一个原因是JAVA本身的执行效率不是很高 如果要做数据库查询还是用C++写数据库底层这样效率应该会比较高的!
而且一般的网站大的访问量的时候不建议使用数据库封装操作!这样的效率不是很高
               
               
               

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u2/84280/showart_2057288.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP