Class::DBI is an interface for interacting with your database, not a generic object system. If you want generic objects that you can store in a session, just use Class::Accessor directly (that's what Class::DBI uses). Class::DBI objects have class data, code refs, and live database handles, which are unlikely to serialize cleanly.