in reply to OO Perl & RDBMS Strategy Question

How do you do it?

I've build my own persistent objects solution for a client that had some very strict rules on their system that made most CPAN modules unusable.

In this system I have one or more engines that correspond to a DBI connection, and other objects that correspond to rows in a table (one table per class).

You can fetch specific objects from the engine by giving it the classname and id (or constraints that correspond to WHERE queries):

my $object = $engine->get('Some::Object',$object_id); my @objects = $engine->mget($class,{ name => value, name2 => value2 } +);
Saving is done by explicitly calling the save() method:
my $value = $object->get('name'); $object->set('name','other value'); $object->save();
And objects are passed their engine at creation, so they know where to save their data:
my $object = Object->new($engine,%attributes);
This system doesn't try to be transparant, which has two advantages:

I've recently tried Class::DBI and it seems to do it pretty much the same, except that the DBI connection is global for a given class, which I don't like one bit.

-- Joost downtime n. The period during which a system is error-free and immune from user input.