For what it's worth, you may want to take a loook at my
DBIx::SQLEngine, which supports multiple levels of abstraction, so you can start by using it as a convenience wrapper around common DBI calls, then move up to having it generate queries for you, and later add the object mapping layer if it seems appropriate.