Chinaunix首页 | 论坛 | 博客
  • 博客访问: 3334621
  • 博文数量: 530
  • 博客积分: 13360
  • 博客等级: 上将
  • 技术积分: 5473
  • 用 户 组: 普通用户
  • 注册时间: 2006-07-13 13:32
文章分类

全部博文(530)

文章存档

2017年(1)

2015年(2)

2013年(24)

2012年(20)

2011年(97)

2010年(240)

2009年(117)

2008年(12)

2007年(8)

2006年(9)

分类: Java

2010-02-19 14:33:55

    相信很多人仍然在使用jdbc编程,尽管出现了很多像hibernate等这样的功能强大的数据持久层框架。最近在apache的网站上看到了一个对 jdbc进行简单封装的组件包Dbutils,感觉挺好,向那些和我一样仍在使用jdbc编程的developer推荐一下。第一次翻译,水平有限,不足 之处,尽请海涵。

原文地址:

译文:

Dbutils 是一组类的集合,这组类可以使使用JDBC工作更加容易。Jdbc的资源清理代码是如此不堪,且容易出错,所以这些类从你的代码中分离出全部的清理任务,留给你的只有你想用jdbc做的工作:查询与更新。

使用dbutils的好处是:

·不可能资源泄露。正确的jdbc代码编写不困难,但是却十分的费时和繁琐。这经常导致连接泄露,而这又是很难跟踪的。

·精简代码,精简持久化代码。需要将数据持久化到数据库的这些代码锐减。没有了混乱的清理资源的代码,剩下的能很清楚的表达你的意思。

·从返回的结果集ResultSets,能自动填充javabean的属性。你不需要通过调用javabean的setter方法手工复制列的值到bean的实例中。结果集的每一行都能够被完全被bean的实例表达。

Dbutils 被设计为:

·精巧的-你能够在很短的时间内理解所有的包。

·透明的-dbutils不在幕后做任何魔术。你给他一次查询,它执行这次查询,然后为你做查询后的清理工作。

·快速的-你不需要创造百万个临时对象与dbutils一起工作。

Dbutils 不是:

·对象/关系桥梁-已经有大量的好的O/R工具。Dbutils是为使用jdbc的开发者准备的。

·数据访问对象(DAO)框架 – 但是dbutils能够被用来建立DAO框架。

·普通数据库对象比如表、列或者关键字的面向对象的抽象。

·任何一种重量级框架 – 这里的目标是一个直接而且容易使用的JDBC帮助库。

Dbutils:jdbc通用组件例子
本页提供了一些例子来展示dbutils可能如何被使用


基本使用
 
Dbutils是一个很 小巧的类库,所以你不需要花很长时间来熟悉每个类的帮助文档。在dbutils中的核心类/接口是QueryRunner和 ResultSetHandler。你不需要了解任何其它dbutils 类就能通过使用这个类库获益。下面这个例子演示了如何使用这些类。
// Create a ResultSetHandler implementation to convert the
// first row into an Object[].
ResultSetHandler h = new ResultSetHandler() {
    public Object handle(ResultSet rs) throws SQLException {
        if (!rs.next()) {
            return null;
        }
   
        ResultSetMetaData meta = rs.getMetaData();
        int cols = meta.getColumnCount();
        Object[] result = new Object[cols];
 
        for (int i = 0; i < cols; i++) {
            result[i] = rs.getObject(i + 1);
        }
 
        return result;
    }
};
 
// Create a QueryRunner that will use connections from
// the given DataSource
QueryRunner run = new QueryRunner(dataSource);
 
// Execute the query and get the results back from the handler
Object[] result = (Object[]) run.query(
    "SELECT * FROM Person WHERE name=?", "John Doe", h);
 
你也可以使用java.sql.Connection对象代替Datasource来处理上面例子中的查询,需要注意的是在这个例子中你需要显示关闭Connection
ResultSetHandler h = ... // Define a handler the same as above example
 
// No DataSource so we must handle Connections manually
QueryRunner run = new QueryRunner();
 
Connection conn = ... // open a connection
try{
    Object[] result = (Object[]) run.query(
        conn, "SELECT * FROM Person WHERE name=?", "John Doe", h);
       // do something with the result
      
} finally {
    // Use this helper method so we don't have to check for null
    DbUtils.close(conn);
}

阅读(6319) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

chinaunix网友2010-05-10 23:47:43

具体步骤就是那样吗。。。。你的代码那样