JDBC操作的封装包——Dbutils

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

原文地址:http://commons.apache.org/dbutils/

译文:

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);
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值