JDBC 4.0のラッパー・インタフェース

もう一つ、同じくLance Andersenのブログより、JDBC 4.0の新機能であるラッパー・インタフェースの紹介です。
http://weblogs.java.net/blog/lancea/archive/2006/02/jdbc_40_wrapper.html
JDBC 4.0ではjava.sql.Connectionやjava.sql.StatementなどのクラスがWrapperインタフェースをimplementsするようになっています。WrapperインタフェースにはisWrapperFor()とunwrap()というメソッドが定義されており、これらを使用してJDBCのクラスによるラップを除去してベンダ固有のクラスに戻すことで、ベンダの提供する標準でないメソッドも利用できるようになるという話です。

Statement stat = con.createStatement();
Class clazz = Class.forName("oracle.jdbc.OracleStatement");
OracleStatement os;
if(stat.isWrapperFor(clazz)) {
    os = stat.unwrap(clazz);
    os.defineColumnType(1, Types.NUMBER);
}