小ネタ千夜一夜 第6夜 Apache Commonsの凋落

2004年にJ2SE5.0がでて以来、それに対応できていないCommonsはアップロードなど一部を除いてほとんど使われなくなりましたね。

え?まだガンガン使ってる?もう2009年なのに?J2SE5.0ですら新規アプリの開発に推奨されてないのに?


というわけで、当時流行ったCommons DBUtilsを5.0対応のラッパを作成します。DBUtils、J2SE1.4どころかJ2SE1.3なんですね…。

コードは以下のとおり。

public class DBAccessUtils {
    public static <T> List<T> getListDto(Connection con , Class<T> clazz,String sql,Object... params) throws SQLException  {

        QueryRunner qr = new QueryRunner();
        ResultSetHandler rsh = new BeanListHandler(clazz);
        return (List<T>) qr.query(con, sql, params, rsh);
        
    }
}

使用方法は以下のとおり。使用しているDBはJavaDBのサンプルDBですね。可変長引数によるパラメータの渡し方はいわゆる4年くらい前にはやったやつです。シンプルだけど楽ですよね。

String sql = "select * from customer " +
        "where customer_id >= ? and customer_id <= ? " +
        "order by city";
List<Customer> customers = DBAccessUtils.getListDto(con, Customer.class, sql,
                        5 , 200);
for(Customer c :customers){
    System.out.printf("[%d] %s:%s%n",
            c.getCustomer_id() , c.getName() , c.getCity());
}

こういうユーティリティクラスはいつも大量に作ってるので備忘録代わりに。特にEJB3.0とかでネイティブSQL使う場面が多い人はこういうの用意しておくと便利ですよね。データソースはインジェクションしてくれるし、無設定でJTAによるコンテナ管理のトランザクションしてくれるし。

JSF以上にEJB3.0は誤解されてる気がするので、EJB3.0ネタもあとで書くかな。