必要な時だけコネクションを張る

ObjectAPI形式だけを使用する場合、DBI.onDemand で勝手にopen、closeしてくれます。

Dao002.java
public interface Dao002 {
	@SqlUpdate("create table IF NOT EXISTS table002 (id int primary key, name varchar(100))")
	void createTable();

	@SqlUpdate("insert into table002 (id, name) values ((select count(*)+1 from table002), :name)")
	void insert(@Bind("name") String name);

	@SqlQuery("select name from table002 where id = :id")
	String findNameById(@Bind("id") int id);

	void close();
}
Sample007.java
public static void main(String[] args) {
	String url = "jdbc:postgresql://192.168.52.128/jdbi";
	DBI dbi = new DBI(url, "jdbi_user", "jdbi_pass");

	Dao001 dao001 = dbi.onDemand(Dao001.class);
	dao001.createTable();
	dao001.insert("dao001");

	Dao002 dao002 = dbi.onDemand(Dao002.class);
	dao002.createTable();
	dao002.insert("dao002");
}

デバッガで1行ずつ実行しながらコネクションの接続状況を確認すると、どこで止めてもコネクションが確認できません。実は、SQLを実行する直前に接続して、実行直後にすぐ切断してみるみたいです。
SqlObject.java の174行目「ding.retain(method.toString());」でコネクションを作成し、そのfinally節で「ding.release(method.toString());」として切断してます(実際のコードはまだもう少し先の処理ですが)。
トランザクションが必要無ければこれでもいいでしょうけど、エラー時は rollback するのが必須ですから、ある限定的な場合においてはコードがキレイになっていいけど、あんまり使いどころが無いような気がします