Objective::DBI(仮称)

-------- Keel/DB.pm ------
package Keel::DB;
use base qw(Objective::DBI::MySQL);

__PACKAGE__->set_db('dbi:mysql:keel', 'root', '', {AutoCommit => 1});
----- END Keel/DB.pm -----

------ test.pl -------
use Keel::DB;
use Data::Dumper;

my $db = Keel::DB->new;

$row = $db->get_table('work')->retrieve(2);

$row->change('time' => 1);
$row->update();
---- END test.pl ------

現在、こんな感じで動いてます。
今回追加した機能として、Class::DBIの1テーブル1クラスは継続しながらも、新しいテーブルを追加した場合、自動でクラスを生成する仕様にしてみました。この仕様をDB名:keelの中にTable名:workがあるという具体的なケースに基づいて説明します。
Class::DBIの場合:

package Keel::DB::Work;
use base qw(Keel::DB);
__PACKAGE__->set_table('work');

という記述が必ず必要でした。もちろん1クラス1ファイルにする必要は無いのでどこに書いても構いませんが、そのファイルを読み込み忘れることも多かったはずですし、テーブルを追加するたびにファイルを新しく生成する必要がありました。
たとえそのクラスで用いるメソッドが、高々retrieve程度のものであったとしても。これは不便というより不親切ではないでしょうか。
Objective::DBIの場合:
何もなし、です。
もちろん、Class::DBIのように自分でクラスを設定したい場合もあるでしょう。その場合には、自分でファイルを置くことで自動認識されます。
Class::DBIライクなものがほしい場合はテーブルクラスファイルを置いても構わないし、不要なものをわざわざ作る必要は無いのです。まだまだ改良していきますが。