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):
Saving is done by explicitly calling the save() method:my $object = $engine->get('Some::Object',$object_id); my @objects = $engine->mget($class,{ name => value, name2 => value2 } +);
And objects are passed their engine at creation, so they know where to save their data:my $value = $object->get('name'); $object->set('name','other value'); $object->save();
This system doesn't try to be transparant, which has two advantages:my $object = Object->new($engine,%attributes);
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.
In reply to Re: OO Perl & RDBMS Strategy Question
by Joost
in thread OO Perl & RDBMS Strategy Question
by DamnDirtyApe
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |