This is a very unusual use of Class::DBI. You seem to be using it for nothing more than holding the database connection and the queries. If you don't plan to use it for actual objects with properties that you change and save, there is no good reason to use it. Just use DBI's connect_cached and prepare_cached instead, or use Ima::DBI, which is the module that Class::DBI uses to do all of the funtionality you are using here.