CAM::SQLObject - Object parent class for SQL delegates LICENSE Copyright 2005 Clotho Advanced Media, Inc., This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself. ABOUT CLOTHO "CAM" stands for Clotho Advanced Media Inc. (www.clotho.com) which developed this module. Contact us at info@clotho.com. INSTALLATION Install via one of the following: perl Makefile.PL make make test make install or perl Build.PL perl Build perl Build test perl Build install DESCRIPTION Subclasses of CAM::SQLObject act as delegates for an SQL infrastructure implemented by CAM::SQLManager XML files. You name your SQL queries in the XML files (kind of like stored procedures) and call them by name from your SQLObject instance. The data retrieved from or written to the database is reflected in the instance's data structure. The goal of CAM::SQLObject is to minimize the amount of programming needed to build a full-power interface to an SQL data record. This class is not meant to be instantiated directly. Instead, it is intended to be the superclass of real database frontend objects. Those objects may add several get[field] and set[field] routines to act as accessors and mutators for the database fields. Or, they can be very thin layers where all of the implementation is done in the SQL XML file. See CAM::SQLManager for XML file examples and a DTD. The CPAN module that is most similar to CAM::SQLObject is Class::DBI. The main difference is that CAM::SQLObject abstracts as much of the SQL away into external files as possible, while Class::DBI embraces the SQL and internalizes it as much as possible. Advantages of CAM::SQLObject vs. Class::DBI: * SQL commands are disconnected from the Perl code, allowing database adjustments without rewriting code. * Allows complex joins * Allows Perl field names to be different from SQL column names * Facilitates testing and benchmarking SQL queries Disadvantages of CAM::SQLObject vs. Class::DBI: * Requires nearly all queries to be written out (almost no implicit queries) * Difficult to translate free-form searches from Perl to SQL * Doesn't support foreign keys or triggers In summary, Class::DBI is nice if you have simple tables that don't change format. CAM::SQLObject is better if you have a large collection of well-defined queries, or if your database might change, or if you need to keep an eye on all of the possible queries.